[SCM] ViennaCL packaging branch, master, updated. debian/1.1.2-6-15-g1630552
Michael Wild
themiwi at users.sourceforge.net
Thu Feb 16 19:56:42 UTC 2012
The following commit has been merged in the master branch:
commit 036822943b407bdedb37ad638a3e22b1d54f4128
Author: Michael Wild <themiwi at users.sourceforge.net>
Date: Thu Feb 16 16:28:00 2012 +0000
New upstream version 1.2.0
diff --git a/CMakeLists.txt b/CMakeLists.txt
old mode 100755
new mode 100644
index b22748a..0b1be9f
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,261 +1,91 @@
-PROJECT(ViennaCL)
+# Project setup
+###############
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
+if(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
-#if you don't want the full compiler output, remove or comment the following line
-SET(CMAKE_VERBOSE_MAKEFILE ON)
+project(ViennaCL)
-# ************************** Section 1: Configure external dependencies **************************
-
#
-# If you are interested in the impact of different kernel parameters on performance,
-# you may want to give ViennaProfiler a try (see http://sourceforge.net/projects/viennaprofiler/)
-# Set your connection parameters in examples/parameters/common_vprof.hpp accordingly.
+# User customizations if CMake does not find Boost or OpenCL
#
-#SET(ENABLE_VIENNAPROFILER ON)
-#SET(MYSQLPATH "/opt/boost") #path to MySQL header files
-#SET(MYSQLPPPATH "/opt/boost") #path to MySQL++ header files
-
-#
-# If you want to build the examples that use boost::numeric::ublas, enable the following:
-#
-#SET(ENABLE_UBLAS ON)
-#SET(BOOSTPATH "/opt/boost") #put your path to boost here if not in global include folder
+# Set boost path here if not found automatically by CMake
+#SET(BOOST_ROOT "C:/Program\ Files\ (x86)/boost/boost_1_42") # adjust this on Windows
+#SET(BOOST_ROOT "/opt/local/include") # adjust this on MacOS or Linux
-#
-# alternate boost path for macs
-#
+# For out-of-the-box support on MacOS:
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- INCLUDE_DIRECTORIES("/opt/local/include")
+ INCLUDE_DIRECTORIES("/opt/local/include")
+ set(CMAKE_EXE_LINKER_FLAGS "-framework OpenCL")
ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+# Common options - There is usually no need to change anything below this line
+################
-#
-# If you want to build the examples that use Eigen, uncomment the following:
-#
-#SET(ENABLE_EIGEN ON)
-#SET(EIGENPATH "/path/to/eigen/") #put your path to Eigen here if not in global include folder
-
-
-#
-# If you want to build the examples that use MTL4, uncomment the following:
-#
-#SET(ENABLE_MTL4 ON)
-#SET(MTL4PATH "/path/to/MTL-4/") #put your path to MTL4 here if not in global include folder
-
-
-
-# ************************** Section 2: Configure OpenCL **************************
-
-#
-# AMD APP SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if AMD APP SDK is not in use.
-#
-SET(AppSDK $ENV{AMDAPPSDKROOT})
-IF(AppSDK)
- INCLUDE_DIRECTORIES($ENV{AMDAPPSDKROOT}/include)
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86) #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86_64) #use this on 64 bit systems
-ENDIF(AppSDK)
-#
-# Note that the environment variable was ATISTREAMSDKROOT in older versions of the SDK:
-#
-SET(StreamSDK $ENV{ATISTREAMSDKROOT})
-IF(StreamSDK)
- INCLUDE_DIRECTORIES($ENV{ATISTREAMSDKROOT}/include)
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86) #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86_64) #use this on 64 bit systems
-ENDIF(StreamSDK)
-
-
-#
-# Intel OpenCL SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if Intel OpenCL SDK is not in use.
-#
-SET(IntelSDK $ENV{INTELOCLSDKROOT})
-IF(IntelSDK)
- INCLUDE_DIRECTORIES($ENV{INTELOCLSDKROOT}/include)
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x86) #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x64) #use this on 64 bit systems
-ENDIF(IntelSDK)
-
-#
-# For NVIDIA hardware, there should be no need for additional configurations at this point
-#
-
+set(VERSION_MAJOR 1)
+set(VERSION_MINOR 2)
+set(VERSION_PATCH 0)
+set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
-# ************************** Section 3: ViennaCL standalone builds **************************
+list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
-#
-# Specify include and source directory
-#
-INCLUDE_DIRECTORIES(".")
-INCLUDE_DIRECTORIES("external/")
+include(ViennaCLCommon)
-
-#add definitions, compiler switches, etc.
+# Set release build:
IF(DEFINED CMAKE_BUILD_TYPE)
SET (CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})
ELSE()
SET (CMAKE_BUILD_TYPE Release)
ENDIF()
-#
-# Set high warning level on GCC and enable optimizations (or debug)
-#
-IF(CMAKE_COMPILER_IS_GNUCXX)
- #ADD_DEFINITIONS(-Wall -O0 -g) #debug build
- ADD_DEFINITIONS(-Wall -pedantic -O3) #release build
-ENDIF(CMAKE_COMPILER_IS_GNUCXX)
-
-#
-# Standalone ViennaCL executables
-#
+# User options
+##############
-#tutorials:
-ADD_EXECUTABLE(blas1 examples/tutorial/blas1.cpp)
-ADD_EXECUTABLE(custom-kernels examples/tutorial/custom-kernels.cpp)
-ADD_EXECUTABLE(custom-context examples/tutorial/custom-context.cpp)
-ADD_EXECUTABLE(viennacl-info examples/tutorial/viennacl-info.cpp)
+option(BUILD_DOXYGEN_DOCS "Build the Doxygen-generated API docs" ON)
-#benchmarks
-ADD_EXECUTABLE(vectorbench examples/benchmarks/vector.cpp)
-ADD_EXECUTABLE(openclbench examples/benchmarks/opencl.cpp)
-ADD_EXECUTABLE(blas3bench examples/benchmarks/blas3.cpp)
+option(BUILD_MANUAL "Build the PDF manual" ON)
-#parameters:
-ADD_EXECUTABLE(vectorparams examples/parameters/vector.cpp
- external/pugixml/src/pugixml.cpp)
-ADD_EXECUTABLE(matrixparams examples/parameters/matrix.cpp
- external/pugixml/src/pugixml.cpp)
-ADD_EXECUTABLE(sparseparams examples/parameters/sparse.cpp
- external/pugixml/src/pugixml.cpp)
-ADD_EXECUTABLE(parameter_reader examples/parameters/parameter_reader.cpp
- external/pugixml/src/pugixml.cpp)
-
-#
-# Mac OS X specific linker part
-#
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(CMAKE_EXE_LINKER_FLAGS "-framework OpenCL")
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+mark_as_advanced(BUILD_DOXYGEN_DOCS BUILD_MANUAL)
-#
-# Linux and Windows specific linker part
-#
-IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
- #tutorials
- TARGET_LINK_LIBRARIES(blas1 OpenCL)
- TARGET_LINK_LIBRARIES(custom-kernels OpenCL)
- TARGET_LINK_LIBRARIES(custom-context OpenCL)
- TARGET_LINK_LIBRARIES(viennacl-info OpenCL)
+# Find prerequisites
+####################
- #benchmarks
- TARGET_LINK_LIBRARIES(vectorbench OpenCL)
- TARGET_LINK_LIBRARIES(openclbench OpenCL)
- TARGET_LINK_LIBRARIES(blas3bench OpenCL)
+if(BUILD_DOXYGEN_DOCS)
+ find_package(Doxygen REQUIRED)
+endif()
- #parameter estimation
- TARGET_LINK_LIBRARIES(vectorparams OpenCL)
- TARGET_LINK_LIBRARIES(matrixparams OpenCL)
- TARGET_LINK_LIBRARIES(sparseparams OpenCL)
- TARGET_LINK_LIBRARIES(parameter_reader OpenCL)
-ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
+if(BUILD_MANUAL)
+ find_package(LATEX REQUIRED)
+endif()
+# Compile options
+#################
-# ************************** Section 4: ViennaCL with external libraries **************************
+include_directories(BEFORE ${PROJECT_SOURCE_DIR})
-#
-# ViennaProfiler related configuration
-#
-IF(DEFINED ENABLE_VIENNAPROFILER)
- INCLUDE_DIRECTORIES(${MYSQLPATH})
- INCLUDE_DIRECTORIES(${MYSQLPPPATH})
+# Subdirectories
+################
- #vector:
- ADD_EXECUTABLE(vectorparams_vprof examples/parameters/vector.cpp
- external/pugixml/src/pugixml.cpp)
- SET_PROPERTY(TARGET vectorparams_vprof PROPERTY COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
- TARGET_LINK_LIBRARIES(vectorparams_vprof OpenCL mysqlpp)
+add_subdirectory(auxiliary)
- #dense matrix:
- ADD_EXECUTABLE(matrixparams_vprof examples/parameters/matrix.cpp
- external/pugixml/src/pugixml.cpp)
- SET_PROPERTY(TARGET matrixparams_vprof PROPERTY COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
- TARGET_LINK_LIBRARIES(matrixparams_vprof OpenCL mysqlpp)
+if(BUILD_EXAMPLES)
+ add_subdirectory(examples)
+endif()
- #sparse matrix:
- ADD_EXECUTABLE(sparseparams_vprof examples/parameters/sparse.cpp
- external/pugixml/src/pugixml.cpp)
- SET_PROPERTY(TARGET sparseparams_vprof PROPERTY COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
- TARGET_LINK_LIBRARIES(sparseparams_vprof OpenCL mysqlpp)
-ENDIF(DEFINED ENABLE_VIENNAPROFILER)
+if(BUILD_TESTING)
+ add_subdirectory(tests)
+endif()
+add_subdirectory(doc)
-#
-# ublas related configuration
-#
-IF(DEFINED ENABLE_UBLAS)
- INCLUDE_DIRECTORIES(${BOOSTPATH})
-
- #tutorials:
- ADD_EXECUTABLE(blas2 examples/tutorial/blas2.cpp)
- ADD_EXECUTABLE(blas3 examples/tutorial/blas3.cpp)
- ADD_EXECUTABLE(iterative examples/tutorial/iterative.cpp)
- ADD_EXECUTABLE(iterative-ublas examples/tutorial/iterative-ublas.cpp)
-
- #benchmarks:
- ADD_EXECUTABLE(sparsebench examples/benchmarks/sparse.cpp)
- ADD_EXECUTABLE(solverbench examples/benchmarks/solver.cpp)
-
- IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
- TARGET_LINK_LIBRARIES(iterative OpenCL)
- TARGET_LINK_LIBRARIES(blas2 OpenCL)
- TARGET_LINK_LIBRARIES(blas3 OpenCL)
-
- TARGET_LINK_LIBRARIES(sparsebench OpenCL)
- TARGET_LINK_LIBRARIES(solverbench OpenCL)
- ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-
-ENDIF(DEFINED ENABLE_UBLAS)
-
-
-
-#
-# Eigen related configuration
-#
-IF(DEFINED ENABLE_EIGEN)
- INCLUDE_DIRECTORIES(${EIGENPATH})
- ADD_EXECUTABLE(iterative-eigen examples/tutorial/iterative-eigen.cpp)
- ADD_EXECUTABLE(eigen-with-viennacl examples/tutorial/eigen-with-viennacl.cpp)
-
- IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
- TARGET_LINK_LIBRARIES(eigen-with-viennacl OpenCL)
- ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-ENDIF(DEFINED ENABLE_EIGEN)
-
-
-
-#
-# MTL4 related configuration
-#
-IF(DEFINED ENABLE_MTL4)
- INCLUDE_DIRECTORIES(${MTL4PATH})
- ADD_EXECUTABLE(iterative-mtl4 examples/tutorial/iterative-mtl4.cpp)
- ADD_EXECUTABLE(mtl4-with-viennacl examples/tutorial/mtl4-with-viennacl.cpp)
+# Install
+#########
- IF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
- TARGET_LINK_LIBRARIES(mtl4-with-viennacl OpenCL)
- ENDIF((${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
-ENDIF(DEFINED ENABLE_MTL4)
+install(DIRECTORY viennacl
+ DESTINATION ${INSTALL_INCLUDE_DIR} COMPONENT dev
+ FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")
diff --git a/LICENSE b/LICENSE
index 75edd98..fd650fb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2010, 2011, Institute for Microelectronics, TU Wien
+Copyright (c) 2010, Institute for Microelectronics, TU Wien
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/auxiliary/CMakeLists.txt b/auxiliary/CMakeLists.txt
new file mode 100644
index 0000000..cfd1ce6
--- /dev/null
+++ b/auxiliary/CMakeLists.txt
@@ -0,0 +1,301 @@
+include_directories(${Boost_INCLUDE_DIRS})
+
+add_executable(generate-blas3-solve-align1 generate-blas3-solve-align1.cpp)
+add_executable(generate-blas3-prod-align1 generate-blas3-prod-align1.cpp)
+
+function(generate_blas3_prod_align1 outvar)
+ set(crstr_0 col)
+ set(crstr_1 row)
+ set(ATstr_0 A)
+ set(ATstr_1 T)
+ set(outfiles)
+
+ foreach(ar 0 1) # A is column/row major
+ foreach(br 0 1) # B is column/row major
+ foreach(cr 0 1) # C is column/row major
+ foreach(at 0 1) # A is (not) transposed
+ foreach(bt 0 1) # B is (not) transposed
+ set(d "${CMAKE_CURRENT_BINARY_DIR}")
+ set(d "${d}/matrix_prod_${crstr_${ar}}_${crstr_${br}}_${crstr_${cr}}")
+ set(d "${d}/align1")
+ file(MAKE_DIRECTORY "${d}")
+ set(o "${d}/prod_${ATstr_${at}}${ATstr_${bt}}.cl")
+ file(RELATIVE_PATH ro "${CMAKE_CURRENT_BINARY_DIR}" "${o}")
+ add_custom_command(OUTPUT "${o}"
+ COMMAND generate-blas3-prod-align1
+ ${ar} ${br} ${cr} ${at} ${bt} > "${o}"
+ COMMENT "Generating ${ro}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ VERBATIM)
+ list(APPEND outfiles "${o}")
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+ set(${outvar} "${outfiles}" PARENT_SCOPE)
+endfunction()
+
+function(generate_blas3_solve_align1 outvar)
+ set(crstr_0 col)
+ set(crstr_1 row)
+ set(tstr_0)
+ set(tstr_1 trans_)
+ set(ulstr_0 lower)
+ set(ulstr_1 upper)
+ set(unitstr_0)
+ set(unitstr_1 unit_)
+ set(outfiles)
+
+ foreach(ar 0 1) # A is column/row major
+ foreach(br 0 1) # A is column/row major
+ foreach(at 0 1) # A is transposed
+ foreach(bt 0 1) # B is transposed
+ foreach(ul 0 1) # upper/lower
+ foreach(un 0 1) # unit
+ set(d "${CMAKE_CURRENT_BINARY_DIR}")
+ set(d "${d}/matrix_solve_${crstr_${ar}}_${crstr_${br}}")
+ set(d "${d}/align1")
+ file(MAKE_DIRECTORY "${d}")
+ set(o "${d}/${tstr_${at}}${unitstr_${un}}${ulstr_${ul}}_${tstr_${bt}}solve.cl")
+ file(RELATIVE_PATH ro "${CMAKE_CURRENT_BINARY_DIR}" "${o}")
+ add_custom_command(OUTPUT "${o}"
+ COMMAND generate-blas3-solve-align1
+ ${ar} ${br} ${at} ${bt} ${ul} ${un} > "${o}"
+ COMMENT "Generating ${ro}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ VERBATIM)
+ list(APPEND outfiles "${o}")
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+ endforeach()
+ set(${outvar} "${outfiles}" PARENT_SCOPE)
+endfunction()
+
+# Matrix-Matrix products
+generate_blas3_prod_align1(MATRIX_PROD_SRCS)
+
+# Matrix-Matrix triangular solver
+generate_blas3_solve_align1(MATRIX_SOLVE_SRCS)
+
+set(COMPRESSED_MATRIX_SRCS
+ compressed_matrix/align1/bicgstab_kernel1.cl
+ compressed_matrix/align1/bicgstab_kernel2.cl
+ compressed_matrix/align1/jacobi.cl
+ compressed_matrix/align1/jacobi_precond.cl
+ compressed_matrix/align1/lu_backward.cl
+ compressed_matrix/align1/lu_forward.cl
+ compressed_matrix/align1/row_scaling_1.cl
+ compressed_matrix/align1/row_scaling_2.cl
+ compressed_matrix/align1/vec_mul.cl
+ compressed_matrix/align4/vec_mul.cl
+ compressed_matrix/align8/vec_mul.cl)
+
+set(COORDINATE_MATRIX_SRCS
+ coordinate_matrix/align1/vec_mul.cl
+ coordinate_matrix/align128/dummy)
+
+set(MATRIX_COL_SRCS
+ matrix_col/align1/add.cl
+ matrix_col/align1/clear.cl
+ matrix_col/align1/cpu_inplace_mult.cl
+ matrix_col/align1/fft_direct.cl
+ matrix_col/align1/fft_radix2.cl
+ matrix_col/align1/fft_radix2_local.cl
+ matrix_col/align1/fft_reorder.cl
+ matrix_col/align1/inplace_add.cl
+ matrix_col/align1/inplace_divide.cl
+ matrix_col/align1/inplace_mult.cl
+ matrix_col/align1/inplace_sub.cl
+ matrix_col/align1/lower_triangular_substitute_inplace.cl
+ matrix_col/align1/lu_factorize.cl
+ matrix_col/align1/rank1_update.cl
+ matrix_col/align1/scaled_rank1_update.cl
+ matrix_col/align1/sub.cl
+ matrix_col/align1/trans_lower_triangular_substitute_inplace.cl
+ matrix_col/align1/trans_unit_lower_triangular_substitute_inplace.cl
+ matrix_col/align1/trans_unit_upper_triangular_substitute_inplace.cl
+ matrix_col/align1/trans_upper_triangular_substitute_inplace.cl
+ matrix_col/align1/trans_vec_mul.cl
+ matrix_col/align1/unit_lower_triangular_substitute_inplace.cl
+ matrix_col/align1/unit_upper_triangular_substitute_inplace.cl
+ matrix_col/align1/upper_triangular_substitute_inplace.cl
+ matrix_col/align1/vec_mul.cl
+ matrix_col/align16/dummy)
+
+set(MATRIX_ROW_SRCS
+ matrix_row/align1/add.cl
+ matrix_row/align1/clear.cl
+ matrix_row/align1/cpu_inplace_mult.cl
+ matrix_row/align1/fft_direct.cl
+ matrix_row/align1/fft_radix2.cl
+ matrix_row/align1/fft_radix2_local.cl
+ matrix_row/align1/fft_reorder.cl
+ matrix_row/align1/inplace_add.cl
+ matrix_row/align1/inplace_divide.cl
+ matrix_row/align1/inplace_mult.cl
+ matrix_row/align1/inplace_sub.cl
+ matrix_row/align1/lower_triangular_substitute_inplace.cl
+ matrix_row/align1/lu_factorize.cl
+ matrix_row/align1/rank1_update.cl
+ matrix_row/align1/scaled_rank1_update.cl
+ matrix_row/align1/sub.cl
+ matrix_row/align1/trans_lower_triangular_substitute_inplace.cl
+ matrix_row/align1/trans_unit_lower_triangular_substitute_inplace.cl
+ matrix_row/align1/trans_unit_upper_triangular_substitute_inplace.cl
+ matrix_row/align1/trans_upper_triangular_substitute_inplace.cl
+ matrix_row/align1/trans_vec_mul.cl
+ matrix_row/align1/unit_lower_triangular_substitute_inplace.cl
+ matrix_row/align1/unit_upper_triangular_substitute_inplace.cl
+ matrix_row/align1/upper_triangular_substitute_inplace.cl
+ matrix_row/align1/vec_mul.cl
+ matrix_row/align16/dummy)
+
+set(SCALAR_SRCS
+ scalar/align1/add.cl
+ scalar/align1/cpu_add.cl
+ scalar/align1/cpu_div.cl
+ scalar/align1/cpu_inplace_add.cl
+ scalar/align1/cpu_inplace_div.cl
+ scalar/align1/cpu_inplace_mul.cl
+ scalar/align1/cpu_inplace_sub.cl
+ scalar/align1/cpu_mul.cl
+ scalar/align1/cpu_sub.cl
+ scalar/align1/divide.cl
+ scalar/align1/inplace_add.cl
+ scalar/align1/inplace_div.cl
+ scalar/align1/inplace_mul.cl
+ scalar/align1/inplace_sub.cl
+ scalar/align1/mul.cl
+ scalar/align1/sub.cl)
+
+set(VECTOR_SRCS
+ vector/align16/add.cl
+ vector/align16/cpu_inplace_mul.cl
+ vector/align16/cpu_mult.cl
+ vector/align16/divide.cl
+ vector/align16/inplace_add.cl
+ vector/align16/inplace_divide.cl
+ vector/align16/inplace_mult.cl
+ vector/align16/inplace_sub.cl
+ vector/align16/mult.cl
+ vector/align16/sub.cl
+ vector/align1/add.cl
+ vector/align1/clear.cl
+ vector/align1/cpu_inplace_mul_add.cl
+ vector/align1/cpu_inplace_mult.cl
+ vector/align1/cpu_mul_add.cl
+ vector/align1/cpu_mult.cl
+ vector/align1/diag_precond.cl
+ vector/align1/divide.cl
+ vector/align1/index_norm_inf.cl
+ vector/align1/inner_prod.cl
+ vector/align1/inplace_add.cl
+ vector/align1/inplace_div_add.cl
+ vector/align1/inplace_divide.cl
+ vector/align1/inplace_div_sub.cl
+ vector/align1/inplace_mul_add.cl
+ vector/align1/inplace_mul_sub.cl
+ vector/align1/inplace_mult.cl
+ vector/align1/inplace_sub.cl
+ vector/align1/mul_add.cl
+ vector/align1/mul_sub.cl
+ vector/align1/mult.cl
+ vector/align1/norm_1.cl
+ vector/align1/norm_2.cl
+ vector/align1/norm_inf.cl
+ vector/align1/plane_rotation.cl
+ vector/align1/sqrt_sum.cl
+ vector/align1/sub.cl
+ vector/align1/sum.cl
+ vector/align1/swap.cl
+ vector/align1/vmax.cl
+ vector/align4/cpu_inplace_mul_add.cl
+ vector/align4/cpu_mul_add.cl
+ vector/align4/inplace_div_add.cl
+ vector/align4/inplace_div_sub.cl
+ vector/align4/inplace_mul_add.cl
+ vector/align4/inplace_mul_sub.cl
+ vector/align4/mul_add.cl)
+
+set(FFT_SRCS
+ fft/align1/bluestein_post.cl
+ fft/align1/bluestein_pre.cl
+ fft/align1/complex_to_real.cl
+ fft/align1/fft_div_vec_scalar.cl
+ fft/align1/fft_mult_vec.cl
+ fft/align1/real_to_complex.cl
+ fft/align1/reverse_inplace.cl
+ fft/align1/transpose.cl
+ fft/align1/transpose_inplace.cl
+ fft/align1/vandermonde_prod.cl
+ fft/align1/zero2.cl
+ )
+
+set(SPAI_SRCS
+ spai/align1/assemble_blocks.cl
+ spai/align1/block_bv_assembly.cl
+ spai/align1/block_least_squares.cl
+ spai/align1/block_q_mult.cl
+ spai/align1/block_qr.cl
+ spai/align1/block_qr_assembly.cl
+ spai/align1/block_qr_assembly_1.cl
+ spai/align1/block_r_assembly.cl
+ )
+
+set(CL_SRCS)
+foreach(f IN LISTS COMPRESSED_MATRIX_SRCS COORDINATE_MATRIX_SRCS
+ MATRIX_COL_SRCS MATRIX_ROW_SRCS SCALAR_SRCS VECTOR_SRCS FFT_SRCS SPAI_SRCS)
+ get_filename_component(d "${CMAKE_CURRENT_BINARY_DIR}/${f}" PATH)
+ file(MAKE_DIRECTORY "${d}")
+ configure_file(${f} "${CMAKE_CURRENT_BINARY_DIR}/${f}" COPYONLY)
+ list(APPEND CL_SRCS "${CMAKE_CURRENT_BINARY_DIR}/${f}")
+endforeach()
+list(APPEND CL_SRCS ${MATRIX_PROD_SRCS} ${MATRIX_SOLVE_SRCS})
+
+add_executable(converter converter.cpp)
+target_link_libraries(converter ${Boost_LIBRARIES})
+
+set(KERNEL_HDRS)
+set(KERNEL_SRCS)
+foreach(d
+ compressed_matrix
+ coordinate_matrix
+ matrix_col
+ matrix_prod_col_col_col
+ matrix_prod_col_col_row
+ matrix_prod_col_row_col
+ matrix_prod_col_row_row
+ matrix_prod_row_col_col
+ matrix_prod_row_col_row
+ matrix_prod_row_row_col
+ matrix_prod_row_row_row
+ matrix_row
+ matrix_solve_col_col
+ matrix_solve_col_row
+ matrix_solve_row_col
+ matrix_solve_row_row
+ scalar
+ vector
+ fft
+ spai
+ )
+ set(f "${PROJECT_SOURCE_DIR}/viennacl/linalg/kernels/${d}")
+ list(APPEND KERNEL_HDRS "${f}_kernels.h")
+ list(APPEND KERNEL_SRCS "${f}_source.h")
+endforeach()
+
+file(MAKE_DIRECTORY "${PROJECT_SOURCE_DIR}/viennacl/linalg/kernels")
+
+add_custom_command(OUTPUT ${KERNEL_HDRS} ${KERNEL_SRCS}
+ COMMAND converter
+ DEPENDS ${CL_SRCS}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ COMMENT "Generating kernel headers and sources"
+ VERBATIM)
+
+add_custom_target(kernels ALL
+ DEPENDS ${KERNEL_HDRS} ${KERNEL_SRCS})
diff --git a/auxiliary/README b/auxiliary/README
index 3abeafe..f672a19 100644
--- a/auxiliary/README
+++ b/auxiliary/README
@@ -6,9 +6,9 @@ The generic location of the raw .cl files in auxiliary-folder is is:
[type]/align[alignment]/[kernelname].cl
where
-[type] ... the ViennaCL class the kernel is defined for
+[type] ... the ViennaCL class the kernel is defined for (see VCLKernels.h)
[alignment] ... Alignment of data for vectorization (1,2,4,8,16,...)
-[kernelname] ... name of the kernel
+[kernelname] ... name of the kernel as defined in (see VCLKernels.h)
Note that kernels for double precision are generated automatically by a string replace of "float" -> "double"
diff --git a/auxiliary/clean.sh b/auxiliary/clean.sh
deleted file mode 100755
index 3bd4109..0000000
--- a/auxiliary/clean.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-
-rm *.*~
-
-rm scalar/align1/*.cl~
-
-rm vector/align1/*.cl~
-rm vector/align4/*.cl~
-rm vector/align16/*.cl~
-
-rm matrix_row/align1/*.cl~
-rm matrix_row/align16/*.cl~
-rm matrix_col/align1/*.cl~
-rm matrix_col/align16/*.cl~
-
-rm matrix_prod_row_row_row/align1/*.cl~
-rm matrix_prod_row_row_col/align1/*.cl~
-rm matrix_prod_row_col_row/align1/*.cl~
-rm matrix_prod_row_col_col/align1/*.cl~
-
-rm matrix_prod_col_row_row/align1/*.cl~
-rm matrix_prod_col_row_col/align1/*.cl~
-rm matrix_prod_col_col_row/align1/*.cl~
-rm matrix_prod_col_col_col/align1/*.cl~
-
-rm matrix_solve_row_row/align1/*.cl~
-rm matrix_solve_row_col/align1/*.cl~
-rm matrix_solve_col_row/align1/*.cl~
-rm matrix_solve_col_col/align1/*.cl~
-
-
-rm compressed_matrix/align1/*.cl~
-rm compressed_matrix/align4/*.cl~
-rm compressed_matrix/align8/*.cl~
diff --git a/auxiliary/compressed_matrix/align1/jacobi.cl b/auxiliary/compressed_matrix/align1/jacobi.cl
new file mode 100644
index 0000000..6623ceb
--- /dev/null
+++ b/auxiliary/compressed_matrix/align1/jacobi.cl
@@ -0,0 +1,28 @@
+
+
+__kernel void jacobi(
+ __global const unsigned int * row_indices,
+ __global const unsigned int * column_indices,
+ __global const float * elements,
+ float weight,
+ __global const float * old_result,
+ __global float * new_result,
+ __global const float * rhs,
+ unsigned int size)
+ {
+ float sum, diag=1;
+ int col;
+ for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+ {
+ sum = 0;
+ for (unsigned int j = row_indices[i]; j<row_indices[i+1]; j++)
+ {
+ col = column_indices[j];
+ if (i == col)
+ diag = elements[j];
+ else
+ sum += elements[j] * old_result[col];
+ }
+ new_result[i] = weight * (rhs[i]-sum) / diag + (1-weight) * old_result[i];
+ }
+ }
diff --git a/auxiliary/convert.sh b/auxiliary/convert.sh
deleted file mode 100755
index d554fa4..0000000
--- a/auxiliary/convert.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-g++ generate-blas3-solve-align1.cpp -o generate-blas3-solve-align1
-g++ generate-blas3-prod-align1.cpp -o generate-blas3-prod-align1
-
-./generate-blas3.sh
-
-g++ converter.cpp -o converter -lboost_filesystem-mt
-./converter
diff --git a/auxiliary/converter b/auxiliary/converter
deleted file mode 100755
index 6728e74..0000000
Binary files a/auxiliary/converter and /dev/null differ
diff --git a/auxiliary/converter.cpp b/auxiliary/converter.cpp
index b6eb75e..a11de53 100644
--- a/auxiliary/converter.cpp
+++ b/auxiliary/converter.cpp
@@ -7,6 +7,8 @@
#include <sstream>
#include <string>
+#define BOOST_FILESYSTEM_VERSION 2
+
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/path.hpp>
#include <iostream>
@@ -51,14 +53,14 @@ void createSourceFile(const char * dirname)
{
//Step 1: Open source file
std::string header_name(dirname);
- std::ofstream source_file(("../viennacl/linalg/kernels/" + header_name + "_source.h").c_str());
+ std::ofstream source_file(("../../viennacl/linalg/kernels/" + header_name + "_source.h").c_str());
//Step 2: Write source header file preamble
std::string dirname_uppercase(dirname);
std::transform(dirname_uppercase.begin(), dirname_uppercase.end(), dirname_uppercase.begin(), toupper);
- source_file << "#ifndef _VIENNACL_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
- source_file << "#define _VIENNACL_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
- source_file << "//Automatically generated file from aux-directory, do not edit manually!" << std::endl;
+ source_file << "#ifndef VIENNACL_LINALG_KERNELS_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
+ source_file << "#define VIENNACL_LINALG_KERNELS_" << dirname_uppercase << "_SOURCE_HPP_" << std::endl;
+ source_file << "//Automatically generated file from auxiliary-directory, do not edit manually!" << std::endl;
source_file << "namespace viennacl" << std::endl;
source_file << "{" << std::endl;
source_file << " namespace linalg" << std::endl;
@@ -70,7 +72,7 @@ void createSourceFile(const char * dirname)
fs::path filepath = fs::system_complete( fs::path( dirname ) );
if ( fs::is_directory( filepath ) )
{
- std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
+ //std::cout << "\n In directory " << filepath.directory_string() << std::endl;
fs::directory_iterator end_iter;
//write and register single precision sources:
@@ -80,7 +82,7 @@ void createSourceFile(const char * dirname)
{
if (fs::is_directory( alignment_itr->path() ))
{
- std::cout << "\nIn directory: " << alignment_itr->path().directory_string() << std::endl;
+ std::cout << "\nGenerating kernels from directory " << alignment_itr->path().directory_string() << std::endl;
//write and register single precision sources:
for ( fs::directory_iterator cl_itr( alignment_itr->path() );
@@ -259,7 +261,7 @@ void createKernelFile(const char * dirname)
{
//Step 1: Open kernel file
std::string header_name(dirname);
- std::ofstream kernel_file(("../viennacl/linalg/kernels/" + header_name + "_kernels.h").c_str());
+ std::ofstream kernel_file(("../../viennacl/linalg/kernels/" + header_name + "_kernels.h").c_str());
//Step 2: Write kernel header file preamble
std::string dirname_uppercase(dirname);
@@ -290,7 +292,7 @@ void createKernelFile(const char * dirname)
fs::path filepath = fs::system_complete( fs::path( dir ) );
if ( fs::is_directory( filepath ) )
{
- std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
+ //std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
fs::directory_iterator end_iter;
//write and register single precision sources:
@@ -316,7 +318,7 @@ void createKernelFile(const char * dirname)
filepath = fs::system_complete( fs::path( dir ) );
if ( fs::is_directory( filepath ) )
{
- std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
+ //std::cout << "\nIn directory: " << filepath.directory_string() << std::endl;
fs::directory_iterator end_iter;
//write and register single precision sources:
@@ -353,7 +355,6 @@ void createHeaders(const char * dirname)
int main(int args, char * argsv[])
{
-
createHeaders("compressed_matrix");
createHeaders("coordinate_matrix");
createHeaders("matrix_row");
@@ -372,5 +373,7 @@ int main(int args, char * argsv[])
createHeaders("matrix_solve_row_row");
createHeaders("scalar");
createHeaders("vector");
-
+ createHeaders("fft");
+ createHeaders("spai");
}
+
diff --git a/auxiliary/fft/align1/bluestein_post.cl b/auxiliary/fft/align1/bluestein_post.cl
new file mode 100644
index 0000000..563d9ea
--- /dev/null
+++ b/auxiliary/fft/align1/bluestein_post.cl
@@ -0,0 +1,23 @@
+// Postprocessing phase of Bluestein algorithm
+__kernel void bluestein_post(__global float2* Z,
+ __global float2* out,
+ unsigned int size)
+{
+ unsigned int glb_id = get_global_id(0);
+ unsigned int glb_sz = get_global_size(0);
+
+ unsigned int double_size = size << 1;
+ float sn_a, cs_a;
+ const float NUM_PI = 3.14159265358979323846;
+
+ for(unsigned int i = glb_id; i < size; i += glb_sz) {
+ unsigned int rm = i * i % (double_size);
+ float angle = (float)rm / size * (-NUM_PI);
+
+ sn_a = sincos(angle, &cs_a);
+
+ float2 b_i = (float2)(cs_a, sn_a);
+ out[i] = (float2)(Z[i].x * b_i.x - Z[i].y * b_i.y, Z[i].x * b_i.y + Z[i].y * b_i.x);
+ }
+}
+
diff --git a/auxiliary/fft/align1/bluestein_pre.cl b/auxiliary/fft/align1/bluestein_pre.cl
new file mode 100644
index 0000000..fe64e80
--- /dev/null
+++ b/auxiliary/fft/align1/bluestein_pre.cl
@@ -0,0 +1,34 @@
+// Preprocessing phase of Bluestein algorithm
+__kernel void bluestein_pre(__global float2* input,
+ __global float2* A,
+ __global float2* B,
+ unsigned int size,
+ unsigned int ext_size
+ ) {
+ unsigned int glb_id = get_global_id(0);
+ unsigned int glb_sz = get_global_size(0);
+
+ unsigned int double_size = size << 1;
+
+ float sn_a, cs_a;
+ const float NUM_PI = 3.14159265358979323846;
+
+ for(unsigned int i = glb_id; i < size; i += glb_sz) {
+ unsigned int rm = i * i % (double_size);
+ float angle = (float)rm / size * NUM_PI;
+
+ sn_a = sincos(-angle, &cs_a);
+
+ float2 a_i = (float2)(cs_a, sn_a);
+ float2 b_i = (float2)(cs_a, -sn_a);
+
+ A[i] = (float2)(input[i].x * a_i.x - input[i].y * a_i.y, input[i].x * a_i.y + input[i].y * a_i.x);
+
+ B[i] = b_i;
+
+ // very bad instruction, to be fixed
+ if(i)
+ B[ext_size - i] = b_i;
+ }
+}
+
diff --git a/auxiliary/fft/align1/complex_to_real.cl b/auxiliary/fft/align1/complex_to_real.cl
new file mode 100644
index 0000000..313d78a
--- /dev/null
+++ b/auxiliary/fft/align1/complex_to_real.cl
@@ -0,0 +1,8 @@
+__kernel void complex_to_real(__global float2* in,
+ __global float* out,
+ unsigned int size) {
+ for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+ out[i] = in[i].x;
+ }
+}
+
diff --git a/auxiliary/fft/align1/fft_div_vec_scalar.cl b/auxiliary/fft/align1/fft_div_vec_scalar.cl
new file mode 100644
index 0000000..3c21cf7
--- /dev/null
+++ b/auxiliary/fft/align1/fft_div_vec_scalar.cl
@@ -0,0 +1,7 @@
+// divide a vector by a scalar (to be removed...)
+__kernel void fft_div_vec_scalar(__global float2* input1, unsigned int size, float factor) {
+ for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+ input1[i] /= factor;
+ }
+}
+
diff --git a/auxiliary/fft/align1/fft_mult_vec.cl b/auxiliary/fft/align1/fft_mult_vec.cl
new file mode 100644
index 0000000..8fce0b4
--- /dev/null
+++ b/auxiliary/fft/align1/fft_mult_vec.cl
@@ -0,0 +1,13 @@
+// elementwise product of two complex vectors
+__kernel void fft_mult_vec(__global const float2* input1,
+ __global const float2* input2,
+ __global float2* output,
+ unsigned int size) {
+ for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+ float2 in1 = input1[i];
+ float2 in2 = input2[i];
+
+ output[i] = (float2)(in1.x * in2.x - in1.y * in2.y, in1.x * in2.y + in1.y * in2.x);
+ }
+}
+
diff --git a/auxiliary/fft/align1/real_to_complex.cl b/auxiliary/fft/align1/real_to_complex.cl
new file mode 100644
index 0000000..73888bc
--- /dev/null
+++ b/auxiliary/fft/align1/real_to_complex.cl
@@ -0,0 +1,11 @@
+// embedd a real-valued vector into a complex one
+__kernel void real_to_complex(__global float* in,
+ __global float2* out,
+ unsigned int size) {
+ for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+ float2 val = 0;
+ val.x = in[i];
+ out[i] = val;
+ }
+}
+
diff --git a/auxiliary/fft/align1/reverse_inplace.cl b/auxiliary/fft/align1/reverse_inplace.cl
new file mode 100644
index 0000000..33c0a76
--- /dev/null
+++ b/auxiliary/fft/align1/reverse_inplace.cl
@@ -0,0 +1,11 @@
+// reverses the entries in a vector
+__kernel void reverse_inplace(__global float* vec, uint size) {
+ for(uint i = get_global_id(0); i < (size >> 1); i+=get_global_size(0)) {
+ float val1 = vec[i];
+ float val2 = vec[size - i - 1];
+
+ vec[i] = val2;
+ vec[size - i - 1] = val1;
+ }
+}
+
diff --git a/auxiliary/fft/align1/transpose.cl b/auxiliary/fft/align1/transpose.cl
new file mode 100644
index 0000000..5660fea
--- /dev/null
+++ b/auxiliary/fft/align1/transpose.cl
@@ -0,0 +1,16 @@
+// simplistic matrix transpose function
+__kernel void transpose(__global float2* input,
+ __global float2* output,
+ unsigned int row_num,
+ unsigned int col_num) {
+ unsigned int size = row_num * col_num;
+ for(unsigned int i = get_global_id(0); i < size; i+= get_global_size(0)) {
+ unsigned int row = i / col_num;
+ unsigned int col = i - row*col_num;
+
+ unsigned int new_pos = col * row_num + row;
+
+ output[new_pos] = input[i];
+ }
+}
+
diff --git a/auxiliary/fft/align1/transpose_inplace.cl b/auxiliary/fft/align1/transpose_inplace.cl
new file mode 100644
index 0000000..fcbece7
--- /dev/null
+++ b/auxiliary/fft/align1/transpose_inplace.cl
@@ -0,0 +1,22 @@
+// inplace-transpose of a matrix
+__kernel void transpose_inplace(__global float2* input,
+ unsigned int row_num,
+ unsigned int col_num) {
+ unsigned int size = row_num * col_num;
+ for(unsigned int i = get_global_id(0); i < size; i+= get_global_size(0)) {
+ unsigned int row = i / col_num;
+ unsigned int col = i - row*col_num;
+
+ unsigned int new_pos = col * row_num + row;
+
+ //new_pos = col < row?0:1;
+ //input[i] = new_pos;
+
+ if(i < new_pos) {
+ float2 val = input[i];
+ input[i] = input[new_pos];
+ input[new_pos] = val;
+ }
+ }
+}
+
diff --git a/auxiliary/fft/align1/vandermonde_prod.cl b/auxiliary/fft/align1/vandermonde_prod.cl
new file mode 100644
index 0000000..9c2cadc
--- /dev/null
+++ b/auxiliary/fft/align1/vandermonde_prod.cl
@@ -0,0 +1,19 @@
+// computes the matrix vector product with a Vandermonde matrix
+__kernel void vandermonde_prod(__global float* vander,
+ __global float* vector,
+ __global float* result,
+ uint size) {
+ for(uint i = get_global_id(0); i < size; i+= get_global_size(0)) {
+ float mul = vander[i];
+ float pwr = 1;
+ float val = 0;
+
+ for(uint j = 0; j < size; j++) {
+ val = val + pwr * vector[j];
+ pwr *= mul;
+ }
+
+ result[i] = val;
+ }
+}
+
diff --git a/auxiliary/fft/align1/zero2.cl b/auxiliary/fft/align1/zero2.cl
new file mode 100644
index 0000000..ff8d6aa
--- /dev/null
+++ b/auxiliary/fft/align1/zero2.cl
@@ -0,0 +1,11 @@
+// Zero two complex vectors (to avoid kernel launch overhead)
+__kernel void zero2(__global float2* input1,
+ __global float2* input2,
+ unsigned int size) {
+ for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0)) {
+ input1[i] = 0;
+ input2[i] = 0;
+ }
+
+}
+
diff --git a/auxiliary/generate-blas3-prod-align1.cpp b/auxiliary/generate-blas3-prod-align1.cpp
index 25f3d0f..d30effa 100755
--- a/auxiliary/generate-blas3-prod-align1.cpp
+++ b/auxiliary/generate-blas3-prod-align1.cpp
@@ -52,84 +52,91 @@ void printMatrixMatrixProduct(bool row_major_A, bool row_major_B, bool row_major
std::cout << "(" << std::endl;
std::cout << " __global const float * A," << std::endl;
- std::cout << " unsigned int A_rows," << std::endl;
- std::cout << " unsigned int A_cols," << std::endl;
+ std::cout << " unsigned int A_row_start," << std::endl;
+ std::cout << " unsigned int A_col_start," << std::endl;
+ std::cout << " unsigned int A_row_size," << std::endl; //number of elements starting from row_start!
+ std::cout << " unsigned int A_col_size," << std::endl;
std::cout << " unsigned int A_internal_rows," << std::endl;
std::cout << " unsigned int A_internal_cols," << std::endl;
std::cout << " __global const float * B, " << std::endl;
- std::cout << " unsigned int B_rows," << std::endl;
- std::cout << " unsigned int B_cols," << std::endl;
+ std::cout << " unsigned int B_row_start," << std::endl;
+ std::cout << " unsigned int B_col_start," << std::endl;
+ std::cout << " unsigned int B_row_size," << std::endl;
+ std::cout << " unsigned int B_col_size," << std::endl;
std::cout << " unsigned int B_internal_rows," << std::endl;
std::cout << " unsigned int B_internal_cols," << std::endl;
std::cout << " __global float * C," << std::endl;
- std::cout << " unsigned int C_rows," << std::endl;
- std::cout << " unsigned int C_cols," << std::endl;
+ std::cout << " unsigned int C_row_start," << std::endl;
+ std::cout << " unsigned int C_col_start," << std::endl;
+ std::cout << " unsigned int C_row_size," << std::endl;
+ std::cout << " unsigned int C_col_size," << std::endl;
std::cout << " unsigned int C_internal_rows," << std::endl;
std::cout << " unsigned int C_internal_cols," << std::endl;
std::cout << " __local float * bufA," << std::endl;
std::cout << " __local float * bufB) " << std::endl;
std::cout << "{ " << std::endl;
- std::cout << " int block_size = get_local_size(0);" << std::endl;
- std::cout << " int row_block_id = get_group_id(0);" << std::endl;
- std::cout << " int col_block_id = get_group_id(1);" << std::endl;
- std::cout << " int row_thread_id = get_local_id(0);" << std::endl;
- std::cout << " int col_thread_id = get_local_id(1);" << std::endl;
+ std::cout << " size_t block_size = get_local_size(0);" << std::endl;
+ std::cout << " size_t row_block_id = get_group_id(0);" << std::endl;
+ std::cout << " size_t col_block_id = get_group_id(1);" << std::endl;
+ std::cout << " size_t row_thread_id = get_local_id(0);" << std::endl;
+ std::cout << " size_t col_thread_id = get_local_id(1);" << std::endl;
+ std::cout << " size_t row_block_id_ = get_local_id(1);" << std::endl;
//traverse block row of A (taking mem layout and transpose operation into account)
if (row_major_A && transpose_A)
{
- std::cout << " int aBegin = row_block_id * block_size;" << std::endl;
- std::cout << " int aStep = block_size * A_internal_cols;" << std::endl;
+ std::cout << " size_t aBegin = (row_block_id * block_size + A_col_start) + A_row_start * A_internal_cols;" << std::endl;
+ std::cout << " size_t aStep = block_size * A_internal_cols;" << std::endl;
}
else if (row_major_A && !transpose_A)
{
- std::cout << " int aBegin = row_block_id * block_size * A_internal_cols;" << std::endl;
- std::cout << " int aStep = block_size;" << std::endl;
+ std::cout << " size_t aBegin = (row_block_id * block_size + A_row_start) * A_internal_cols + A_col_start;" << std::endl;
+ std::cout << " size_t aStep = block_size;" << std::endl;
}
else if (!row_major_A && transpose_A)
{
- std::cout << " int aBegin = row_block_id * block_size * A_internal_rows;" << std::endl;
- std::cout << " int aStep = block_size;" << std::endl;
+ std::cout << " size_t aBegin = (row_block_id * block_size + A_col_start) * A_internal_rows + A_row_start;" << std::endl;
+ std::cout << " size_t aStep = block_size;" << std::endl;
}
else if (!row_major_A && !transpose_A)
{
- std::cout << " int aBegin = row_block_id * block_size;" << std::endl;
- std::cout << " int aStep = block_size * A_internal_rows;" << std::endl;
+ std::cout << " size_t aBegin = (row_block_id * block_size + A_row_start) + A_col_start * A_internal_rows;" << std::endl;
+ std::cout << " size_t aStep = block_size * A_internal_rows;" << std::endl;
}
if (row_major_B && transpose_B)
{
- std::cout << " int bBegin = col_block_id * block_size * B_internal_cols;" << std::endl;
- std::cout << " int bStep = block_size;" << std::endl;
+ std::cout << " size_t bBegin = (col_block_id * block_size + B_row_start) * B_internal_cols + B_col_start;" << std::endl;
+ std::cout << " size_t bStep = block_size;" << std::endl;
}
else if (row_major_B && !transpose_B)
{
- std::cout << " int bBegin = col_block_id * block_size;" << std::endl;
- std::cout << " int bStep = block_size * B_internal_cols;" << std::endl;
+ std::cout << " size_t bBegin = (col_block_id * block_size + B_col_start) + B_row_start * B_internal_cols;" << std::endl;
+ std::cout << " size_t bStep = block_size * B_internal_cols;" << std::endl;
}
else if (!row_major_B && transpose_B)
{
- std::cout << " int bBegin = col_block_id * block_size;" << std::endl;
- std::cout << " int bStep = block_size * B_internal_rows;" << std::endl;
+ std::cout << " size_t bBegin = (col_block_id * block_size + B_row_start) + B_col_start * B_internal_rows;" << std::endl;
+ std::cout << " size_t bStep = block_size * B_internal_rows;" << std::endl;
}
else if (!row_major_B && !transpose_B)
{
- std::cout << " int bBegin = col_block_id * block_size * B_internal_rows;" << std::endl;
- std::cout << " int bStep = block_size;" << std::endl;
+ std::cout << " size_t bBegin = (col_block_id * block_size + B_col_start) * B_internal_rows + B_row_start;" << std::endl;
+ std::cout << " size_t bStep = block_size;" << std::endl;
}
if (transpose_A)
{
- std::cout << " int block_num = A_rows / block_size;" << std::endl;
- std::cout << " if (block_num * block_size != A_rows)" << std::endl;
+ std::cout << " size_t block_num = A_row_size / block_size;" << std::endl;
+ std::cout << " if (block_num * block_size != A_row_size)" << std::endl;
std::cout << " ++block_num;" << std::endl;
}
else
{
- std::cout << " int block_num = A_cols / block_size;" << std::endl;
- std::cout << " if (block_num * block_size != A_cols)" << std::endl;
+ std::cout << " size_t block_num = A_col_size / block_size;" << std::endl;
+ std::cout << " if (block_num * block_size != A_col_size)" << std::endl;
std::cout << " ++block_num;" << std::endl;
}
@@ -137,53 +144,80 @@ void printMatrixMatrixProduct(bool row_major_A, bool row_major_B, bool row_major
//offset of the the memory access by the thread relative to the beginning of the block:
if (row_major_A && transpose_A)
- std::cout << " int aOffset = row_thread_id + col_thread_id * A_internal_cols;" << std::endl;
+ std::cout << " size_t aOffset = row_thread_id + col_thread_id * A_internal_cols;" << std::endl;
else if (row_major_A && !transpose_A)
- std::cout << " int aOffset = row_thread_id * A_internal_cols + col_thread_id;" << std::endl;
+ std::cout << " size_t aOffset = row_thread_id * A_internal_cols + col_thread_id;" << std::endl;
else if (!row_major_A && transpose_A)
- std::cout << " int aOffset = row_thread_id * A_internal_rows + col_thread_id;" << std::endl;
+ std::cout << " size_t aOffset = row_thread_id * A_internal_rows + col_thread_id;" << std::endl;
else if (!row_major_A && !transpose_A)
- std::cout << " int aOffset = row_thread_id + col_thread_id * A_internal_rows;" << std::endl;
+ std::cout << " size_t aOffset = row_thread_id + col_thread_id * A_internal_rows;" << std::endl;
if (row_major_B && transpose_B)
- std::cout << " int bOffset = row_thread_id + col_thread_id * B_internal_cols;" << std::endl;
+ std::cout << " size_t bOffset = row_thread_id + col_thread_id * B_internal_cols;" << std::endl;
else if (row_major_B && !transpose_B)
- std::cout << " int bOffset = row_thread_id * B_internal_cols + col_thread_id;" << std::endl;
+ std::cout << " size_t bOffset = row_thread_id * B_internal_cols + col_thread_id;" << std::endl;
else if (!row_major_B && transpose_B)
- std::cout << " int bOffset = row_thread_id * B_internal_rows + col_thread_id;" << std::endl;
+ std::cout << " size_t bOffset = row_thread_id * B_internal_rows + col_thread_id;" << std::endl;
else if (!row_major_B && !transpose_B)
- std::cout << " int bOffset = row_thread_id + col_thread_id * B_internal_rows;" << std::endl;
+ std::cout << " size_t bOffset = row_thread_id + col_thread_id * B_internal_rows;" << std::endl;
- std::cout << " for (int block = 0;" << std::endl;
+ std::cout << " size_t row_thread_id_times_block_size = row_thread_id * block_size;" << std::endl;
+ std::cout << " for (size_t block = 0;" << std::endl;
std::cout << " block < block_num;" << std::endl;
std::cout << " ++block)" << std::endl;
std::cout << " {" << std::endl;
//read block from A and check for access within matrix:
- if (transpose_A)
+/* if (transpose_A)
std::cout << " if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)" << std::endl;
else
std::cout << " if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)" << std::endl;
std::cout << " bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];" << std::endl;
std::cout << " else" << std::endl;
- std::cout << " bufA[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;
+ std::cout << " bufA[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;*/
+
+ //new code:
+ if (transpose_A)
+ std::cout << " bufA[row_thread_id_times_block_size + col_thread_id] = (block * block_size + col_thread_id < A_row_size && get_global_id(0) < A_col_size) ? A[aBegin + aOffset] : 0;" << std::endl;
+ else
+ std::cout << " bufA[row_thread_id_times_block_size + col_thread_id] = (block * block_size + col_thread_id < A_col_size && get_global_id(0) < A_row_size) ? A[aBegin + aOffset] : 0;" << std::endl;
+
//read block from B and check for access within matrix:
- if (transpose_B)
+ /*if (transpose_B)
std::cout << " if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )" << std::endl;
else
std::cout << " if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )" << std::endl;
std::cout << " bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; " << std::endl;
std::cout << " else" << std::endl;
- std::cout << " bufB[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;
+ std::cout << " bufB[row_thread_id * block_size + col_thread_id] = 0;" << std::endl;*/
+
+ /*if (transpose_B)
+ std::cout << " bufB[row_thread_id_times_block_size + col_thread_id] = ( (block * block_size + row_thread_id < B_col_size) && get_global_id(1) < B_row_size ) ? B[bBegin + bOffset] : 0;" << std::endl;
+ else
+ std::cout << " bufB[row_thread_id_times_block_size + col_thread_id] = ( (block * block_size + row_thread_id < B_row_size) && get_global_id(1) < B_col_size ) ? B[bBegin + bOffset] : 0;" << std::endl;*/
+ if (transpose_B)
+ std::cout << " bufB[col_thread_id * block_size + row_thread_id] = ( (block * block_size + row_thread_id < B_col_size) && get_global_id(1) < B_row_size ) ? B[bBegin + bOffset] : 0;" << std::endl;
+ else
+ std::cout << " bufB[col_thread_id * block_size + row_thread_id] = ( (block * block_size + row_thread_id < B_row_size) && get_global_id(1) < B_col_size ) ? B[bBegin + bOffset] : 0;" << std::endl;
+
//computation of block-matrix-matrix product is the same for all cases:
std::cout << " barrier(CLK_LOCAL_MEM_FENCE);" << std::endl;
- std::cout << " for (int k = 0; k < block_size; ++k)" << std::endl;
- std::cout << " Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];" << std::endl;
+ //std::cout << " for (size_t k = 0; k < block_size; ++k)" << std::endl;
+ //std::cout << " Csub += bufA[row_thread_id_times_block_size + k] * bufB[k * block_size + col_thread_id];" << std::endl;
+ //loop unrolling:
+ std::cout << "__local float * bufAptr = bufA + row_thread_id_times_block_size;" << std::endl;
+ std::cout << "__local float * bufBptr = bufB + col_thread_id * block_size;" << std::endl;
+ //std::cout << " Csub += bufA[row_thread_id_times_block_size] * bufB[col_thread_id * block_size];" << std::endl;
+ for (size_t i=0; i<15; ++i)
+ std::cout << " Csub += (*bufAptr) * (*bufBptr); ++bufAptr; ++bufBptr;" << std::endl;
+ //std::cout << " Csub += bufAptr[" << i << "] * bufB[" << i << " + col_thread_id * block_size];" << std::endl;
+ //std::cout << " Csub += bufAptr[" << i << "] * bufB[" << i << " * block_size + col_thread_id];" << std::endl;
+ //std::cout << " Csub += bufAptr[" << i << "] * bufB[" << i << "];" << std::endl;
std::cout << " barrier(CLK_LOCAL_MEM_FENCE);" << std::endl;
std::cout << " aBegin += aStep;" << std::endl;
std::cout << " bBegin += bStep;" << std::endl;
@@ -191,19 +225,19 @@ void printMatrixMatrixProduct(bool row_major_A, bool row_major_B, bool row_major
if (transpose_A)
- std::cout << " if (get_global_id(0) < A_cols && ";
+ std::cout << " if (get_global_id(0) < A_col_size && ";
else
- std::cout << " if (get_global_id(0) < A_rows && ";
+ std::cout << " if (get_global_id(0) < A_row_size && ";
if (transpose_B)
- std::cout << "get_global_id(1) < B_rows)" << std::endl;
+ std::cout << "get_global_id(1) < B_row_size)" << std::endl;
else
- std::cout << "get_global_id(1) < B_cols)" << std::endl;
+ std::cout << "get_global_id(1) < B_col_size)" << std::endl;
if (row_major_C)
- std::cout << " C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;" << std::endl;
+ std::cout << " C[(get_global_id(0) + C_row_start) * C_internal_cols + get_global_id(1) + C_col_start] = Csub;" << std::endl;
else
- std::cout << " C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;" << std::endl;
+ std::cout << " C[get_global_id(0) + C_row_start + (get_global_id(1) + C_col_start) * C_internal_rows] = Csub;" << std::endl;
std::cout << "}" << std::endl;
}
diff --git a/auxiliary/generate-blas3.sh b/auxiliary/generate-blas3.sh
deleted file mode 100755
index 55a49a6..0000000
--- a/auxiliary/generate-blas3.sh
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/bash
-
-############### Step 1: Matrix-Matrix products #########################
-
-# all column-major:
-./generate-blas3-prod-align1 0 0 0 0 0 > matrix_prod_col_col_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 0 0 0 1 > matrix_prod_col_col_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 0 0 1 0 > matrix_prod_col_col_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 0 0 1 1 > matrix_prod_col_col_col/align1/prod_TT.cl
-
-# C row-major, others column-major:
-./generate-blas3-prod-align1 0 0 1 0 0 > matrix_prod_col_col_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 0 1 0 1 > matrix_prod_col_col_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 0 1 1 0 > matrix_prod_col_col_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 0 1 1 1 > matrix_prod_col_col_row/align1/prod_TT.cl
-
-# B row-major, others column-major:
-./generate-blas3-prod-align1 0 1 0 0 0 > matrix_prod_col_row_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 1 0 0 1 > matrix_prod_col_row_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 1 0 1 0 > matrix_prod_col_row_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 1 0 1 1 > matrix_prod_col_row_col/align1/prod_TT.cl
-
-# A column-major, others row-major:
-./generate-blas3-prod-align1 0 1 1 0 0 > matrix_prod_col_row_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 0 1 1 0 1 > matrix_prod_col_row_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 0 1 1 1 0 > matrix_prod_col_row_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 0 1 1 1 1 > matrix_prod_col_row_row/align1/prod_TT.cl
-
-# A row-major, others column-major:
-./generate-blas3-prod-align1 1 0 0 0 0 > matrix_prod_row_col_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 0 0 0 1 > matrix_prod_row_col_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 0 0 1 0 > matrix_prod_row_col_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 0 0 1 1 > matrix_prod_row_col_col/align1/prod_TT.cl
-
-# A row-major, B column-major, C row-major:
-./generate-blas3-prod-align1 1 0 1 0 0 > matrix_prod_row_col_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 0 1 0 1 > matrix_prod_row_col_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 0 1 1 0 > matrix_prod_row_col_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 0 1 1 1 > matrix_prod_row_col_row/align1/prod_TT.cl
-
-# A, B row-major, C column-major:
-./generate-blas3-prod-align1 1 1 0 0 0 > matrix_prod_row_row_col/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 1 0 0 1 > matrix_prod_row_row_col/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 1 0 1 0 > matrix_prod_row_row_col/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 1 0 1 1 > matrix_prod_row_row_col/align1/prod_TT.cl
-
-# all row-major
-./generate-blas3-prod-align1 1 1 1 0 0 > matrix_prod_row_row_row/align1/prod_AA.cl
-./generate-blas3-prod-align1 1 1 1 0 1 > matrix_prod_row_row_row/align1/prod_AT.cl
-./generate-blas3-prod-align1 1 1 1 1 0 > matrix_prod_row_row_row/align1/prod_TA.cl
-./generate-blas3-prod-align1 1 1 1 1 1 > matrix_prod_row_row_row/align1/prod_TT.cl
-
-
-############### Step 2: Matrix-Matrix triangular solver #########################
-
-# all col-major
-./generate-blas3-solve-align1 0 0 0 0 0 0 > matrix_solve_col_col/align1/lower_solve.cl
-./generate-blas3-solve-align1 0 0 0 0 0 1 > matrix_solve_col_col/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 0 0 0 0 1 0 > matrix_solve_col_col/align1/upper_solve.cl
-./generate-blas3-solve-align1 0 0 0 0 1 1 > matrix_solve_col_col/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 0 0 > matrix_solve_col_col/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 0 1 > matrix_solve_col_col/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 1 0 > matrix_solve_col_col/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 0 0 0 1 1 1 > matrix_solve_col_col/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 0 0 > matrix_solve_col_col/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 0 1 > matrix_solve_col_col/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 1 0 > matrix_solve_col_col/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 0 0 1 0 1 1 > matrix_solve_col_col/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 0 0 > matrix_solve_col_col/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 0 1 > matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 1 0 > matrix_solve_col_col/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 0 1 1 1 1 > matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl
-
-# A col-major, B row_major
-./generate-blas3-solve-align1 0 1 0 0 0 0 > matrix_solve_col_row/align1/lower_solve.cl
-./generate-blas3-solve-align1 0 1 0 0 0 1 > matrix_solve_col_row/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 0 1 0 0 1 0 > matrix_solve_col_row/align1/upper_solve.cl
-./generate-blas3-solve-align1 0 1 0 0 1 1 > matrix_solve_col_row/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 0 0 > matrix_solve_col_row/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 0 1 > matrix_solve_col_row/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 1 0 > matrix_solve_col_row/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 0 1 0 1 1 1 > matrix_solve_col_row/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 0 0 > matrix_solve_col_row/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 0 1 > matrix_solve_col_row/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 1 0 > matrix_solve_col_row/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 0 1 1 0 1 1 > matrix_solve_col_row/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 0 0 > matrix_solve_col_row/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 0 1 > matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 1 0 > matrix_solve_col_row/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 0 1 1 1 1 1 > matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl
-
-# A row-major, B col-major
-./generate-blas3-solve-align1 1 0 0 0 0 0 > matrix_solve_row_col/align1/lower_solve.cl
-./generate-blas3-solve-align1 1 0 0 0 0 1 > matrix_solve_row_col/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 1 0 0 0 1 0 > matrix_solve_row_col/align1/upper_solve.cl
-./generate-blas3-solve-align1 1 0 0 0 1 1 > matrix_solve_row_col/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 0 0 > matrix_solve_row_col/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 0 1 > matrix_solve_row_col/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 1 0 > matrix_solve_row_col/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 1 0 0 1 1 1 > matrix_solve_row_col/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 0 0 > matrix_solve_row_col/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 0 1 > matrix_solve_row_col/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 1 0 > matrix_solve_row_col/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 1 0 1 0 1 1 > matrix_solve_row_col/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 0 0 > matrix_solve_row_col/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 0 1 > matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 1 0 > matrix_solve_row_col/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 0 1 1 1 1 > matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl
-
-# all row-major
-./generate-blas3-solve-align1 1 1 0 0 0 0 > matrix_solve_row_row/align1/lower_solve.cl
-./generate-blas3-solve-align1 1 1 0 0 0 1 > matrix_solve_row_row/align1/unit_lower_solve.cl
-./generate-blas3-solve-align1 1 1 0 0 1 0 > matrix_solve_row_row/align1/upper_solve.cl
-./generate-blas3-solve-align1 1 1 0 0 1 1 > matrix_solve_row_row/align1/unit_upper_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 0 0 > matrix_solve_row_row/align1/lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 0 1 > matrix_solve_row_row/align1/unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 1 0 > matrix_solve_row_row/align1/upper_trans_solve.cl
-./generate-blas3-solve-align1 1 1 0 1 1 1 > matrix_solve_row_row/align1/unit_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 0 0 > matrix_solve_row_row/align1/trans_lower_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 0 1 > matrix_solve_row_row/align1/trans_unit_lower_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 1 0 > matrix_solve_row_row/align1/trans_upper_solve.cl
-./generate-blas3-solve-align1 1 1 1 0 1 1 > matrix_solve_row_row/align1/trans_unit_upper_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 0 0 > matrix_solve_row_row/align1/trans_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 0 1 > matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 1 0 > matrix_solve_row_row/align1/trans_upper_trans_solve.cl
-./generate-blas3-solve-align1 1 1 1 1 1 1 > matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl
-
diff --git a/auxiliary/matrix_col/align1/fft_direct.cl b/auxiliary/matrix_col/align1/fft_direct.cl
new file mode 100644
index 0000000..58818ef
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_direct.cl
@@ -0,0 +1,29 @@
+// Direct FFT computation (quadratic complexity - use for reference only)
+__kernel void fft_direct(__global float2* input,
+ __global float2* output,
+ unsigned int size,
+ unsigned int stride,
+ unsigned int batch_num,
+ float sign) {
+
+ const float NUM_PI = 3.14159265358979323846;
+
+ for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+ for(unsigned int k = get_global_id(0); k < size; k += get_global_size(0)) {
+ float2 f = 0.0f;
+
+ for(unsigned int n = 0; n < size; n++) {
+ float2 in = input[n * stride + batch_id]; //input index here
+
+ float sn, cs;
+ float arg = sign * 2 * NUM_PI * k / size * n;
+ sn = sincos(arg, &cs);
+
+ float2 ex = (float2)(cs, sn);
+ f = f + (float2)(in.x * ex.x - in.y * ex.y, in.x * ex.y + in.y * ex.x);
+ }
+
+ output[k * stride + batch_id] = f;// output index here
+ }
+ }
+}
diff --git a/auxiliary/matrix_col/align1/fft_radix2.cl b/auxiliary/matrix_col/align1/fft_radix2.cl
new file mode 100644
index 0000000..998cabc
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_radix2.cl
@@ -0,0 +1,39 @@
+__kernel void fft_radix2(__global float2* input,
+ unsigned int s,
+ unsigned int bit_size,
+ unsigned int size,
+ unsigned int stride,
+ unsigned int batch_num,
+ float sign) {
+
+ unsigned int ss = 1 << s;
+ unsigned int half_size = size >> 1;
+
+ float cs, sn;
+ const float NUM_PI = 3.14159265358979323846;
+
+ unsigned int glb_id = get_global_id(0);
+ unsigned int glb_sz = get_global_size(0);
+
+ for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+ for(unsigned int tid = glb_id; tid < half_size; tid += glb_sz) {
+ unsigned int group = (tid & (ss - 1));
+ unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+ unsigned int offset = pos * stride + batch_id;
+ float2 in1 = input[offset];//index
+ float2 in2 = input[offset + ss * stride];//index
+
+ float arg = group * sign * NUM_PI / ss;
+
+ sn = sincos(arg, &cs);
+ float2 ex = (float2)(cs, sn);
+
+ float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+ input[offset + ss * stride] = in1 - tmp;//index
+ input[offset] = in1 + tmp;//index
+ }
+ }
+}
+
diff --git a/auxiliary/matrix_col/align1/fft_radix2_local.cl b/auxiliary/matrix_col/align1/fft_radix2_local.cl
new file mode 100644
index 0000000..c6e2f5d
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_radix2_local.cl
@@ -0,0 +1,74 @@
+
+unsigned int get_reorder_num(unsigned int v, unsigned int bit_size) {
+ v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+ v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+ v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+ v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+ v = (v >> 16) | (v << 16);
+
+ v = v >> (32 - bit_size);
+
+ return v;
+}
+
+__kernel void fft_radix2_local(__global float2* input,
+ __local float2* lcl_input,
+ unsigned int bit_size,
+ unsigned int size,
+ unsigned int stride,
+ unsigned int batch_num,
+ float sign) {
+
+ unsigned int grp_id = get_group_id(0);
+ unsigned int grp_num = get_num_groups(0);
+
+ unsigned int lcl_sz = get_local_size(0);
+ unsigned int lcl_id = get_local_id(0);
+ const float NUM_PI = 3.14159265358979323846;
+
+ for(unsigned int batch_id = grp_id; batch_id < batch_num; batch_id += grp_num) {
+ //unsigned int base_offset = stride * batch_id;
+ //copy chunk of global memory to local
+
+ for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+ unsigned int v = get_reorder_num(p, bit_size);
+ lcl_input[v] = input[p * stride + batch_id];//index
+ }
+
+ barrier(CLK_LOCAL_MEM_FENCE);
+
+ //performs Cooley-Tukey FFT on local array
+ for(unsigned int s = 0; s < bit_size; s++) {
+ unsigned int ss = 1 << s;
+
+ float cs, sn;
+
+ for(unsigned int tid = lcl_id; tid < size; tid += lcl_sz) {
+ unsigned int group = (tid & (ss - 1));
+ unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+ float2 in1 = lcl_input[pos];
+ float2 in2 = lcl_input[pos + ss];
+
+ float arg = group * sign * NUM_PI / ss;
+
+ sn = sincos(arg, &cs);
+ float2 ex = (float2)(cs, sn);
+
+ float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+ lcl_input[pos + ss] = in1 - tmp;
+ lcl_input[pos] = in1 + tmp;
+ }
+
+ barrier(CLK_LOCAL_MEM_FENCE);
+ }
+
+ //copy local array back to global memory
+ for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+ input[p * stride + batch_id] = lcl_input[p];//index
+ }
+
+ }
+}
+
diff --git a/auxiliary/matrix_col/align1/fft_reorder.cl b/auxiliary/matrix_col/align1/fft_reorder.cl
new file mode 100644
index 0000000..118e6f4
--- /dev/null
+++ b/auxiliary/matrix_col/align1/fft_reorder.cl
@@ -0,0 +1,38 @@
+/*
+* Performs reordering of input data in bit-reversal order
+* Probably it's better to do in host side,
+*/
+
+unsigned int get_reorder_num_2(unsigned int v, unsigned int bit_size) {
+ v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+ v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+ v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+ v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+ v = (v >> 16) | (v << 16);
+
+ v = v >> (32 - bit_size);
+
+ return v;
+}
+
+__kernel void fft_reorder(__global float2* input,
+ unsigned int bit_size,
+ unsigned int size,
+ unsigned int stride,
+ int batch_num) {
+ unsigned int glb_id = get_global_id(0);
+ unsigned int glb_sz = get_global_size(0);
+
+ for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+ for(unsigned int i = glb_id; i < size; i += glb_sz) {
+ unsigned int v = get_reorder_num_2(i, bit_size);
+
+ if(i < v) {
+ float2 tmp = input[i * stride + batch_id]; // index
+ input[i * stride + batch_id] = input[v * stride + batch_id]; //index
+ input[v * stride + batch_id] = tmp; //index
+ }
+ }
+ }
+}
+
diff --git a/auxiliary/matrix_col/align1/inplace_add.cl b/auxiliary/matrix_col/align1/inplace_add.cl
index 73cd0e4..a7c4fca 100644
--- a/auxiliary/matrix_col/align1/inplace_add.cl
+++ b/auxiliary/matrix_col/align1/inplace_add.cl
@@ -1,10 +1,25 @@
__kernel void inplace_add(
- __global float * vec1,
- __global const float * vec2,
- unsigned int size)
+ __global float * A,
+ unsigned int A_row_start,
+ unsigned int A_col_start,
+ unsigned int A_row_size,
+ unsigned int A_col_size,
+ unsigned int A_internal_rows,
+ unsigned int A_internal_cols,
+ __global const float * B,
+ unsigned int B_row_start,
+ unsigned int B_col_start,
+ unsigned int B_row_size,
+ unsigned int B_col_size,
+ unsigned int B_internal_rows,
+ unsigned int B_internal_cols)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] += vec2[i];
+ if ( get_global_id(0) < A_row_size
+ && get_global_id(1) < A_col_size
+ )
+ A[ (get_global_id(0) + A_row_start)
+ + (get_global_id(1) + A_col_start) * A_internal_rows]
+ += B[ (get_global_id(0) + B_row_start)
+ + (get_global_id(1) + B_col_start) * B_internal_rows];
}
-
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_AA.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_AA.cl
deleted file mode 100644
index c52429e..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_AT.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_AT.cl
deleted file mode 100644
index 2f71bcf..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_TA.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_TA.cl
deleted file mode 100644
index c66dc29..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_col/align1/prod_TT.cl b/auxiliary/matrix_prod_col_col_col/align1/prod_TT.cl
deleted file mode 100644
index 76ab0d8..0000000
--- a/auxiliary/matrix_prod_col_col_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...col_major, B...col_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_AA.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_AA.cl
deleted file mode 100644
index 6003f3c..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_AT.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_AT.cl
deleted file mode 100644
index a376700..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_TA.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_TA.cl
deleted file mode 100644
index 7cfb625..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_col_row/align1/prod_TT.cl b/auxiliary/matrix_prod_col_col_row/align1/prod_TT.cl
deleted file mode 100644
index 852303a..0000000
--- a/auxiliary/matrix_prod_col_col_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...col_major, B...col_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_AA.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_AA.cl
deleted file mode 100644
index 90b1ae6..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_AT.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_AT.cl
deleted file mode 100644
index 703d096..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_TA.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_TA.cl
deleted file mode 100644
index f10deb6..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_col/align1/prod_TT.cl b/auxiliary/matrix_prod_col_row_col/align1/prod_TT.cl
deleted file mode 100644
index 3be31e1..0000000
--- a/auxiliary/matrix_prod_col_row_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...col_major, B...row_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_AA.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_AA.cl
deleted file mode 100644
index fc8ce0b..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_AT.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_AT.cl
deleted file mode 100644
index 3e41eca..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_rows;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_rows;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_TA.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_TA.cl
deleted file mode 100644
index 69365a1..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_col_row_row/align1/prod_TT.cl b/auxiliary/matrix_prod_col_row_row/align1/prod_TT.cl
deleted file mode 100644
index 241d2c3..0000000
--- a/auxiliary/matrix_prod_col_row_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...col_major, B...row_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_rows;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_rows + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_AA.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_AA.cl
deleted file mode 100644
index 13b928c..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_AT.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_AT.cl
deleted file mode 100644
index 32afd67..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_TA.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_TA.cl
deleted file mode 100644
index 14dc49e..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_col/align1/prod_TT.cl b/auxiliary/matrix_prod_row_col_col/align1/prod_TT.cl
deleted file mode 100644
index 7ab7cd5..0000000
--- a/auxiliary/matrix_prod_row_col_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...row_major, B...col_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl
deleted file mode 100644
index 69b4edf..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl_special b/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl_special
deleted file mode 100644
index f249494..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_AA.cl_special
+++ /dev/null
@@ -1,86 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = 2 * get_local_size(0);
- int aBegin = get_group_id(0) * block_size * A_internal_cols;
- int bBegin = get_group_id(1) * block_size * B_internal_rows;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
-
- float2 A1 = 1.0f;
- float2 A2 = 1.0f;
- float2 B1;
- float2 B2;
-
- float Csub11 = 0;
- float Csub12 = 0;
- float Csub21 = 0;
- float Csub22 = 0;
-
- int aOffset1 = 2*get_local_id(0) * A_internal_cols + 2*get_local_id(1);
- int aOffset2 = (2*get_local_id(0) + 1) * A_internal_cols + 2*get_local_id(1);
- int bOffset1 = 2*get_local_id(0) + 2*get_local_id(1) * B_internal_rows;
- int bOffset2 = 2*get_local_id(0) + (2*get_local_id(1)+1) * B_internal_rows;
-
- for (int block = 0;
- block < block_num;
- ++block)
- {
- bufA[(2*get_local_id(0)) * block_size + 2*get_local_id(1)] = A[aBegin + aOffset1];
- bufA[(2*get_local_id(0)) * block_size + 2*get_local_id(1) + 1] = A[aBegin + aOffset1 + 1];
- bufA[(2*get_local_id(0)+1) * block_size + 2*get_local_id(1)] = A[aBegin + aOffset2];
- bufA[(2*get_local_id(0)+1) * block_size + 2*get_local_id(1) + 1] = A[aBegin + aOffset2 + 1];
-
-
- bufB[(2*get_local_id(1)) * block_size + 2*get_local_id(0)] = B[bBegin + bOffset1];
- bufB[(2*get_local_id(1)) * block_size + 2*get_local_id(0) + 1] = B[bBegin + bOffset1 + 1];
- bufB[(2*get_local_id(1)+1) * block_size + 2*get_local_id(0)] = B[bBegin + bOffset2];
- bufB[(2*get_local_id(1)+1) * block_size + 2*get_local_id(0) + 1] = B[bBegin + bOffset2 + 1];
-
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; k+=2)
- {
- A1 = *( (__local float2 *)(bufA + 2*get_local_id(0) * block_size + k) );
- A2 = *( (__local float2 *)(bufA + (2*get_local_id(0) + 1) * block_size + k) );
- B1 = *( (__local float2 *)(bufB + 2*get_local_id(1) * block_size + k) );
- B2 = *( (__local float2 *)(bufB + (2*get_local_id(1) + 1) * block_size + k) );
-
- Csub11 += A1.x * B1.x;
- Csub11 += A1.y * B1.y; //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- Csub12 += A1.x * B2.x; //dot(A1, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- Csub12 += A1.y * B2.y; //dot(A1, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- Csub21 += A2.x * B1.x; //dot(A2, B1); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- Csub21 += A2.y * B1.y; //dot(A2, B1); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- Csub22 += A2.x * B2.x; //dot(A2, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- Csub22 += A2.y * B2.y; //dot(A2, B2); //bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- }
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += block_size;
- bBegin += block_size;
- }
-
- C[ get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub11;
- C[ get_global_id(0) * C_internal_cols + get_global_id(1) + 1] = Csub12;
- C[(get_global_id(0) + 1) * C_internal_cols + get_global_id(1)] = Csub21;
- C[(get_global_id(0) + 1) * C_internal_cols + get_global_id(1) + 1] = Csub22;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_AT.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_AT.cl
deleted file mode 100644
index ecc92aa..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_TA.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_TA.cl
deleted file mode 100644
index 31a0a77..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size * B_internal_rows;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id + col_thread_id * B_internal_rows;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_col_row/align1/prod_TT.cl b/auxiliary/matrix_prod_row_col_row/align1/prod_TT.cl
deleted file mode 100644
index 85f8bc3..0000000
--- a/auxiliary/matrix_prod_row_col_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...row_major, B...col_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_rows;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id * B_internal_rows + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_AA.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_AA.cl
deleted file mode 100644
index ee96966..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_AT.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_AT.cl
deleted file mode 100644
index 635a57e..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_TA.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_TA.cl
deleted file mode 100644
index 8406cf4..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_col/align1/prod_TT.cl b/auxiliary/matrix_prod_row_row_col/align1/prod_TT.cl
deleted file mode 100644
index 8fe4c85..0000000
--- a/auxiliary/matrix_prod_row_row_col/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...col_major, A...row_major, B...row_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_AA.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_AA.cl
deleted file mode 100644
index 229d374..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_AA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_AA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_AT.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_AT.cl
deleted file mode 100644
index 8790b3f..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_AT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A * B^T
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_AT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size * A_internal_cols;
- int aStep = block_size;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_cols / block_size;
- if (block_num * block_size != A_cols)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id * A_internal_cols + col_thread_id;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_TA.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_TA.cl
deleted file mode 100644
index cb4c529..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_TA.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_TA(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size;
- int bStep = block_size * B_internal_cols;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id * B_internal_cols + col_thread_id;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_prod_row_row_row/align1/prod_TT.cl b/auxiliary/matrix_prod_row_row_row/align1/prod_TT.cl
deleted file mode 100644
index 330a978..0000000
--- a/auxiliary/matrix_prod_row_row_row/align1/prod_TT.cl
+++ /dev/null
@@ -1,59 +0,0 @@
-// file automatically generated - do not edit!
-// matrix-matrix multiplication C = A^T * B^T
-// matrix layouts: C...row_major, A...row_major, B...row_major
-__kernel void prod_TT(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global const float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols,
- __global float * C,
- unsigned int C_rows,
- unsigned int C_cols,
- unsigned int C_internal_rows,
- unsigned int C_internal_cols,
- __local float * bufA,
- __local float * bufB)
-{
- int block_size = get_local_size(0);
- int row_block_id = get_group_id(0);
- int col_block_id = get_group_id(1);
- int row_thread_id = get_local_id(0);
- int col_thread_id = get_local_id(1);
- int aBegin = row_block_id * block_size;
- int aStep = block_size * A_internal_cols;
- int bBegin = col_block_id * block_size * B_internal_cols;
- int bStep = block_size;
- int block_num = A_rows / block_size;
- if (block_num * block_size != A_rows)
- ++block_num;
- float Csub = 0;
- int aOffset = row_thread_id + col_thread_id * A_internal_cols;
- int bOffset = row_thread_id + col_thread_id * B_internal_cols;
- for (int block = 0;
- block < block_num;
- ++block)
- {
- if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)
- bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];
- else
- bufA[row_thread_id * block_size + col_thread_id] = 0;
- if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )
- bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset];
- else
- bufB[row_thread_id * block_size + col_thread_id] = 0;
- barrier(CLK_LOCAL_MEM_FENCE);
- for (int k = 0; k < block_size; ++k)
- Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];
- barrier(CLK_LOCAL_MEM_FENCE);
- aBegin += aStep;
- bBegin += bStep;
- }
- if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)
- C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;
-}
diff --git a/auxiliary/matrix_row/align1/fft_direct.cl b/auxiliary/matrix_row/align1/fft_direct.cl
new file mode 100644
index 0000000..0642a64
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_direct.cl
@@ -0,0 +1,32 @@
+// naive fourier transform (quadratic complexity, use for reference only)
+__kernel void fft_direct(__global float2* input,
+ __global float2* output,
+ unsigned int size,
+ unsigned int stride,
+ unsigned int batch_num,
+ float sign) {
+
+// unsigned int base_offset = 0;
+ const float NUM_PI = 3.14159265358979323846;
+
+ for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+ for(unsigned int k = get_global_id(0); k < size; k += get_global_size(0)) {
+ float2 f = 0.0f;
+
+ for(unsigned int n = 0; n < size; n++) {
+ float2 in = input[batch_id * stride + n]; //input index here
+
+ float sn, cs;
+ float arg = sign * 2 * NUM_PI * k / size * n;
+ sn = sincos(arg, &cs);
+
+ float2 ex = (float2)(cs, sn);
+ f = f + (float2)(in.x * ex.x - in.y * ex.y, in.x * ex.y + in.y * ex.x);
+ }
+
+ output[batch_id * stride + k] = f;// output index here
+ }
+
+// base_offset += stride;
+ }
+}
diff --git a/auxiliary/matrix_row/align1/fft_radix2.cl b/auxiliary/matrix_row/align1/fft_radix2.cl
new file mode 100644
index 0000000..348a54b
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_radix2.cl
@@ -0,0 +1,46 @@
+__kernel void fft_radix2(__global float2* input,
+ unsigned int s,
+ unsigned int bit_size,
+ unsigned int size,
+ unsigned int stride,
+ unsigned int batch_num,
+ float sign) {
+
+ unsigned int ss = 1 << s;
+ unsigned int half_size = size >> 1;
+
+ float cs, sn;
+ const float NUM_PI = 3.14159265358979323846;
+
+ unsigned int glb_id = get_global_id(0);
+ unsigned int glb_sz = get_global_size(0);
+
+// unsigned int base_offset = 0;
+
+ for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+ for(unsigned int tid = glb_id; tid < half_size; tid += glb_sz) {
+ unsigned int group = (tid & (ss - 1));
+ unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+ unsigned int offset = batch_id * stride + pos;
+ float2 in1 = input[offset];//index
+ float2 in2 = input[offset + ss];//index
+
+ float arg = group * sign * NUM_PI / ss;
+
+ sn = sincos(arg, &cs);
+ //sn = native_sin(arg);
+ //cs = native_cos(arg);
+
+ float2 ex = (float2)(cs, sn);
+
+ float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+ input[offset + ss] = in1 - tmp;//index
+ input[offset] = in1 + tmp;//index
+ }
+
+// base_offset += stride;
+ }
+}
+
diff --git a/auxiliary/matrix_row/align1/fft_radix2_local.cl b/auxiliary/matrix_row/align1/fft_radix2_local.cl
new file mode 100644
index 0000000..0dbe4e1
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_radix2_local.cl
@@ -0,0 +1,72 @@
+
+unsigned int get_reorder_num(unsigned int v, unsigned int bit_size) {
+ v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+ v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+ v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+ v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+ v = (v >> 16) | (v << 16);
+
+ v = v >> (32 - bit_size);
+
+ return v;
+}
+
+__kernel void fft_radix2_local(__global float2* input,
+ __local float2* lcl_input,
+ unsigned int bit_size,
+ unsigned int size,
+ unsigned int stride,
+ unsigned int batch_num,
+ float sign) {
+
+ unsigned int grp_id = get_group_id(0);
+ unsigned int grp_num = get_num_groups(0);
+
+ unsigned int lcl_sz = get_local_size(0);
+ unsigned int lcl_id = get_local_id(0);
+ const float NUM_PI = 3.14159265358979323846;
+
+ for(unsigned int batch_id = grp_id; batch_id < batch_num; batch_id += grp_num) {
+ //unsigned int base_offset = stride * batch_id;
+ //copy chunk of global memory to local
+ for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+ unsigned int v = get_reorder_num(p, bit_size);
+ lcl_input[v] = input[batch_id * stride + p];//index
+ }
+
+ barrier(CLK_LOCAL_MEM_FENCE);
+
+ //performs Cooley-Tukey FFT on local array
+ for(unsigned int s = 0; s < bit_size; s++) {
+ unsigned int ss = 1 << s;
+
+ float cs, sn;
+
+ for(unsigned int tid = lcl_id; tid < size; tid += lcl_sz) {
+ unsigned int group = (tid & (ss - 1));
+ unsigned int pos = ((tid >> s) << (s + 1)) + group;
+
+ float2 in1 = lcl_input[pos];
+ float2 in2 = lcl_input[pos + ss];
+
+ float arg = group * sign * NUM_PI / ss;
+
+ sn = sincos(arg, &cs);
+ float2 ex = (float2)(cs, sn);
+
+ float2 tmp = (float2)(in2.x * ex.x - in2.y * ex.y, in2.x * ex.y + in2.y * ex.x);
+
+ lcl_input[pos + ss] = in1 - tmp;
+ lcl_input[pos] = in1 + tmp;
+ }
+
+ barrier(CLK_LOCAL_MEM_FENCE);
+ }
+
+ //copy local array back to global memory
+ for(unsigned int p = lcl_id; p < size; p += lcl_sz) {
+ input[batch_id * stride + p] = lcl_input[p];//index
+ }
+ }
+}
+
diff --git a/auxiliary/matrix_row/align1/fft_reorder.cl b/auxiliary/matrix_row/align1/fft_reorder.cl
new file mode 100644
index 0000000..0fafd0a
--- /dev/null
+++ b/auxiliary/matrix_row/align1/fft_reorder.cl
@@ -0,0 +1,42 @@
+/*
+* Performs reordering of input data in bit-reversal order
+* Probably it's better to do in host side,
+*/
+unsigned int get_reorder_num_2(unsigned int v, unsigned int bit_size) {
+ v = ((v >> 1) & 0x55555555) | ((v & 0x55555555) << 1);
+ v = ((v >> 2) & 0x33333333) | ((v & 0x33333333) << 2);
+ v = ((v >> 4) & 0x0F0F0F0F) | ((v & 0x0F0F0F0F) << 4);
+ v = ((v >> 8) & 0x00FF00FF) | ((v & 0x00FF00FF) << 8);
+ v = (v >> 16) | (v << 16);
+
+ v = v >> (32 - bit_size);
+
+ return v;
+}
+
+__kernel void fft_reorder(__global float2* input,
+ unsigned int bit_size,
+ unsigned int size,
+ unsigned int stride,
+ int batch_num) {
+ //unsigned int base_offset = 0;
+
+ unsigned int glb_id = get_global_id(0);
+ unsigned int glb_sz = get_global_size(0);
+
+ for(unsigned int batch_id = 0; batch_id < batch_num; batch_id++) {
+ for(unsigned int i = glb_id; i < size; i += glb_sz) {
+ unsigned int v = get_reorder_num_2(i, bit_size);
+
+ if(i < v) {
+ float2 tmp = input[batch_id * stride + i]; // index
+ input[batch_id * stride + i] = input[batch_id * stride + v]; //index
+ input[batch_id * stride + v] = tmp; //index
+ }
+ }
+
+ //base_offset += stride;
+ }
+}
+
+
diff --git a/auxiliary/matrix_row/align1/inplace_add.cl b/auxiliary/matrix_row/align1/inplace_add.cl
index 73cd0e4..08b7f7f 100644
--- a/auxiliary/matrix_row/align1/inplace_add.cl
+++ b/auxiliary/matrix_row/align1/inplace_add.cl
@@ -1,10 +1,26 @@
__kernel void inplace_add(
- __global float * vec1,
- __global const float * vec2,
- unsigned int size)
+ __global float * A,
+ unsigned int A_row_start,
+ unsigned int A_col_start,
+ unsigned int A_row_size,
+ unsigned int A_col_size,
+ unsigned int A_internal_rows,
+ unsigned int A_internal_cols,
+ __global const float * B,
+ unsigned int B_row_start,
+ unsigned int B_col_start,
+ unsigned int B_row_size,
+ unsigned int B_col_size,
+ unsigned int B_internal_rows,
+ unsigned int B_internal_cols)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] += vec2[i];
+ if ( get_global_id(0) < A_row_size
+ && get_global_id(1) < A_col_size
+ )
+ A[ (get_global_id(0) + A_row_start) * A_internal_cols
+ + (get_global_id(1) + A_col_start)]
+ += B[ (get_global_id(0) + B_row_start) * B_internal_cols
+ + (get_global_id(1) + B_col_start)];
}
diff --git a/auxiliary/matrix_solve_col_col/align1/lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/lower_solve.cl
deleted file mode 100644
index fa49f4d..0000000
--- a/auxiliary/matrix_solve_col_col/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/lower_trans_solve.cl
deleted file mode 100644
index 9e3c19c..0000000
--- a/auxiliary/matrix_solve_col_col/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_lower_solve.cl
deleted file mode 100644
index 4f66ed6..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index aadc067..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index 6eba5f6..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index 40fe7e7..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index c8ce8b5..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index bd5ba2f..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_upper_solve.cl
deleted file mode 100644
index cb5767b..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index 9c9f457..0000000
--- a/auxiliary/matrix_solve_col_col/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void trans_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_lower_solve.cl
deleted file mode 100644
index c77089b..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index 40abf01..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_upper_solve.cl
deleted file mode 100644
index ac5245b..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index 33459a4..0000000
--- a/auxiliary/matrix_solve_col_col/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/upper_solve.cl b/auxiliary/matrix_solve_col_col/align1/upper_solve.cl
deleted file mode 100644
index 8b71f6d..0000000
--- a/auxiliary/matrix_solve_col_col/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...col_major
-__kernel void upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_col/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_col_col/align1/upper_trans_solve.cl
deleted file mode 100644
index a696159..0000000
--- a/auxiliary/matrix_solve_col_col/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...col_major
-__kernel void upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/lower_solve.cl
deleted file mode 100644
index 083bd49..0000000
--- a/auxiliary/matrix_solve_col_row/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/lower_trans_solve.cl
deleted file mode 100644
index 06dfdc6..0000000
--- a/auxiliary/matrix_solve_col_row/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_lower_solve.cl
deleted file mode 100644
index 2154426..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index 8aca103..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index 1d6599f..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index 74e572d..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index 4d3c372..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index 0bfdb10..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_upper_solve.cl
deleted file mode 100644
index e433bd0..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index e1b6634..0000000
--- a/auxiliary/matrix_solve_col_row/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void trans_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_lower_solve.cl
deleted file mode 100644
index cb2da62..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index 302689f..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_upper_solve.cl
deleted file mode 100644
index f3a1ccc..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index d4a8173..0000000
--- a/auxiliary/matrix_solve_col_row/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/upper_solve.cl b/auxiliary/matrix_solve_col_row/align1/upper_solve.cl
deleted file mode 100644
index e93feda..0000000
--- a/auxiliary/matrix_solve_col_row/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...col_major, B...row_major
-__kernel void upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_col_row/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_col_row/align1/upper_trans_solve.cl
deleted file mode 100644
index 69cfb27..0000000
--- a/auxiliary/matrix_solve_col_row/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...col_major, B...row_major
-__kernel void upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/lower_solve.cl
deleted file mode 100644
index 4e7c5d2..0000000
--- a/auxiliary/matrix_solve_row_col/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/lower_trans_solve.cl
deleted file mode 100644
index bebd5a6..0000000
--- a/auxiliary/matrix_solve_row_col/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_lower_solve.cl
deleted file mode 100644
index 7738de7..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index da49eb3..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index 2ec32b6..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index e9605fc..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index 7467e62..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index 82d8e62..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_upper_solve.cl
deleted file mode 100644
index e93422c..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index 33b00c6..0000000
--- a/auxiliary/matrix_solve_row_col/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void trans_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_lower_solve.cl
deleted file mode 100644
index 70df3f4..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index c168100..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_upper_solve.cl
deleted file mode 100644
index 7b1e113..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index da6ae7a..0000000
--- a/auxiliary/matrix_solve_row_col/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/upper_solve.cl b/auxiliary/matrix_solve_row_col/align1/upper_solve.cl
deleted file mode 100644
index 358cd4c..0000000
--- a/auxiliary/matrix_solve_row_col/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...col_major
-__kernel void upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_rows];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_col/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_row_col/align1/upper_trans_solve.cl
deleted file mode 100644
index 956e645..0000000
--- a/auxiliary/matrix_solve_row_col/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...col_major
-__kernel void upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_rows + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/lower_solve.cl
deleted file mode 100644
index 635e87d..0000000
--- a/auxiliary/matrix_solve_row_row/align1/lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/lower_trans_solve.cl
deleted file mode 100644
index d430761..0000000
--- a/auxiliary/matrix_solve_row_row/align1/lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_lower_solve.cl
deleted file mode 100644
index 3ba8c8e..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_lower_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_lower_trans_solve.cl
deleted file mode 100644
index e16acaa..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_lower_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_solve.cl
deleted file mode 100644
index f70be74..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl
deleted file mode 100644
index 5a54674..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_solve.cl
deleted file mode 100644
index b03708d..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl
deleted file mode 100644
index e0c0d7a..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_upper_solve.cl
deleted file mode 100644
index bda9852..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/trans_upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/trans_upper_trans_solve.cl
deleted file mode 100644
index 894f69b..0000000
--- a/auxiliary/matrix_solve_row_row/align1/trans_upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A^T \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void trans_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_lower_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_lower_solve.cl
deleted file mode 100644
index 41d276c..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_lower_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_lower_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_lower_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_lower_trans_solve.cl
deleted file mode 100644
index 0d0e259..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_lower_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_lower_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = 0; row < A_rows; ++row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_upper_solve.cl
deleted file mode 100644
index 1fbc162..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_upper_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/unit_upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/unit_upper_trans_solve.cl
deleted file mode 100644
index cbf638f..0000000
--- a/auxiliary/matrix_solve_row_row/align1/unit_upper_trans_solve.cl
+++ /dev/null
@@ -1,25 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void unit_upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/upper_solve.cl b/auxiliary/matrix_solve_row_row/align1/upper_solve.cl
deleted file mode 100644
index 781e5e4..0000000
--- a/auxiliary/matrix_solve_row_row/align1/upper_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B
-// matrix layouts: A...row_major, B...row_major
-__kernel void upper_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row * B_internal_cols + get_group_id(0)];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/matrix_solve_row_row/align1/upper_trans_solve.cl b/auxiliary/matrix_solve_row_row/align1/upper_trans_solve.cl
deleted file mode 100644
index 0f7e321..0000000
--- a/auxiliary/matrix_solve_row_row/align1/upper_trans_solve.cl
+++ /dev/null
@@ -1,28 +0,0 @@
-// file automatically generated - do not edit!
-// inplace solve A \\ B^T
-// matrix layouts: A...row_major, B...row_major
-__kernel void upper_trans_solve(
- __global const float * A,
- unsigned int A_rows,
- unsigned int A_cols,
- unsigned int A_internal_rows,
- unsigned int A_internal_cols,
- __global float * B,
- unsigned int B_rows,
- unsigned int B_cols,
- unsigned int B_internal_rows,
- unsigned int B_internal_cols)
-{
- float temp;
- for (int row = A_rows-1; row > -1; --row)
- {
- barrier(CLK_GLOBAL_MEM_FENCE);
- if (get_local_id(0) == 0)
- B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols];
- barrier(CLK_GLOBAL_MEM_FENCE);
- temp = B[row + get_group_id(0) * B_internal_cols];
- //eliminate column of op(A) with index 'row' in parallel:
- for (int elim = get_local_id(0); elim < row; elim += get_local_size(0))
- B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];
- }
-}
diff --git a/auxiliary/spai/align1/assemble_blocks.cl b/auxiliary/spai/align1/assemble_blocks.cl
new file mode 100644
index 0000000..cdf6b92
--- /dev/null
+++ b/auxiliary/spai/align1/assemble_blocks.cl
@@ -0,0 +1,60 @@
+
+float get_element(__global const unsigned int * row_indices,
+ __global const unsigned int * column_indices,
+ __global const float * elements,
+ unsigned int row,
+ unsigned int col
+ )
+{
+ unsigned int row_end = row_indices[row+1];
+ for(unsigned int i = row_indices[row]; i < row_end; ++i){
+ if(column_indices[i] == col)
+ return elements[i];
+ if(column_indices[i] > col)
+ return 0.0;
+ }
+ return 0.0;
+}
+
+void block_assembly(__global const unsigned int * row_indices,
+ __global const unsigned int * column_indices,
+ __global const float * elements,
+ __global const unsigned int * matrix_dimensions,
+ __global const unsigned int * set_I,
+ __global const unsigned int * set_J,
+ unsigned int matrix_ind,
+ __global float * com_A_I_J)
+{
+ unsigned int row_n = matrix_dimensions[2*matrix_ind];
+ unsigned int col_n = matrix_dimensions[2*matrix_ind + 1];
+
+ for(unsigned int i = 0; i < col_n; ++i){
+ //start row index
+ for(unsigned int j = 0; j < row_n; j++){
+ com_A_I_J[ i*row_n + j] = get_element(row_indices, column_indices, elements, set_I[j], set_J[i]);
+ }
+ }
+
+}
+
+__kernel void assemble_blocks(
+ __global const unsigned int * row_indices,
+ __global const unsigned int * column_indices,
+ __global const float * elements,
+ __global const unsigned int * set_I,
+ __global const unsigned int * set_J,
+ __global const unsigned int * i_ind,
+ __global const unsigned int * j_ind,
+ __global const unsigned int * block_ind,
+ __global const unsigned int * matrix_dimensions,
+ __global float * com_A_I_J,
+ __global unsigned int * g_is_update,
+ unsigned int block_elems_num)
+{
+ for(unsigned int i = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+
+ block_assembly(row_indices, column_indices, elements, matrix_dimensions, set_I + i_ind[i], set_J + j_ind[i], i, com_A_I_J + block_ind[i]);
+ }
+ }
+}
\ No newline at end of file
diff --git a/auxiliary/spai/align1/block_bv_assembly.cl b/auxiliary/spai/align1/block_bv_assembly.cl
new file mode 100644
index 0000000..251671d
--- /dev/null
+++ b/auxiliary/spai/align1/block_bv_assembly.cl
@@ -0,0 +1,33 @@
+void assemble_bv(__global float * g_bv_r, __global float * g_bv, unsigned int col_n){
+ for(unsigned int i = 0; i < col_n; ++i){
+ g_bv_r[i] = g_bv[ i];
+ }
+}
+
+void assemble_bv_block(__global float * g_bv_r, __global float * g_bv, unsigned int col_n,
+ __global float * g_bv_u, unsigned int col_n_u)
+{
+ assemble_bv(g_bv_r, g_bv, col_n);
+ assemble_bv(g_bv_r + col_n, g_bv_u, col_n_u);
+
+}
+
+__kernel void block_bv_assembly(__global float * g_bv,
+ __global unsigned int * start_bv_ind,
+ __global unsigned int * matrix_dimensions,
+ __global float * g_bv_u,
+ __global unsigned int * start_bv_u_ind,
+ __global unsigned int * matrix_dimensions_u,
+ __global float * g_bv_r,
+ __global unsigned int * start_bv_r_ind,
+ __global unsigned int * matrix_dimensions_r,
+ __global unsigned int * g_is_update,
+ //__local float * local_gb,
+ unsigned int block_elems_num)
+{
+ for(unsigned int i = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+ assemble_bv_block(g_bv_r + start_bv_r_ind[i], g_bv + start_bv_ind[i], matrix_dimensions[2*i + 1], g_bv_u + start_bv_u_ind[i], matrix_dimensions_u[2*i + 1]);
+ }
+ }
+}
\ No newline at end of file
diff --git a/auxiliary/spai/align1/block_least_squares.cl b/auxiliary/spai/align1/block_least_squares.cl
new file mode 100644
index 0000000..326e0c7
--- /dev/null
+++ b/auxiliary/spai/align1/block_least_squares.cl
@@ -0,0 +1,68 @@
+
+void custom_dot_prod_ls(__global float * A, unsigned int row_n, __global float * v, unsigned int ind, float *res){
+ *res = 0.0;
+ for(unsigned int j = ind; j < row_n; ++j){
+ if(j == ind){
+ *res += v[ j];
+ }else{
+ *res += A[ j + ind*row_n]*v[ j];
+ }
+ }
+ }
+
+void backwardSolve(__global float * R, unsigned int row_n, unsigned int col_n, __global float * y, __global float * x){
+ for (int i = col_n-1; i >= 0 ; i--) {
+ x[ i] = y[ i];
+ for (int j = i+1; j < col_n; ++j) {
+ x[ i] -= R[ i + j*row_n]*x[ j];
+ }
+ x[i] /= R[ i + i*row_n];
+ }
+
+}
+
+
+void apply_q_trans_vec_ls(__global float * R, unsigned int row_n, unsigned int col_n, __global const float * b_v, __global float * y){
+ float inn_prod = 0;
+ for(unsigned int i = 0; i < col_n; ++i){
+ custom_dot_prod_ls(R, row_n, y, i, &inn_prod);
+ for(unsigned int j = i; j < row_n; ++j){
+ if(i == j){
+ y[ j] -= b_v[ i]*inn_prod;
+ }
+ else{
+ y[j] -= b_v[ i]*inn_prod*R[ j +i*row_n];
+ }
+ }
+ //std::cout<<y<<std::endl;
+ }
+ }
+
+void ls(__global float * R, unsigned int row_n, unsigned int col_n, __global float * b_v, __global float * m_v, __global float * y_v){
+
+ apply_q_trans_vec_ls(R, row_n, col_n, b_v, y_v);
+ //m_new - is m_v now
+ backwardSolve(R, row_n, col_n, y_v, m_v);
+}
+
+__kernel void block_least_squares(
+ __global float * global_R,
+ __global unsigned int * block_ind,
+ __global float * b_v,
+ __global unsigned int * start_bv_inds,
+ __global float * m_v,
+ __global float * y_v,
+ __global unsigned int * start_y_inds,
+ __global unsigned int * matrix_dimensions,
+ __global unsigned int * g_is_update,
+ //__local float * local_R,
+ unsigned int block_elems_num)
+{
+ for(unsigned int i = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+
+ ls(global_R + block_ind[i], matrix_dimensions[2*i], matrix_dimensions[2*i + 1], b_v +start_bv_inds[i], m_v + start_bv_inds[i], y_v + start_y_inds[i] );
+
+ }
+ }
+}
diff --git a/auxiliary/spai/align1/block_q_mult.cl b/auxiliary/spai/align1/block_q_mult.cl
new file mode 100644
index 0000000..0810155
--- /dev/null
+++ b/auxiliary/spai/align1/block_q_mult.cl
@@ -0,0 +1,74 @@
+
+void custom_dot_prod(__global float * A, unsigned int row_n, __local float * v, unsigned int ind, float *res){
+ *res = 0.0;
+ for(unsigned int j = ind; j < row_n; ++j){
+ if(j == ind){
+ *res += v[j];
+ }else{
+ *res += A[j + ind*row_n]*v[j];
+ }
+ }
+ }
+
+void apply_q_trans_vec(__global float * R, unsigned int row_n, unsigned int col_n, __global float * b_v, __local float * y){
+ float inn_prod = 0;
+ for(unsigned int i = 0; i < col_n; ++i){
+ custom_dot_prod(R, row_n, y, i, &inn_prod);
+ for(unsigned int j = i; j < row_n; ++j){
+ if(i == j){
+ y[j] -= b_v[ i]*inn_prod;
+ }
+ else{
+ y[j] -= b_v[ i]*inn_prod*R[ j + i*row_n];
+ }
+ }
+ }
+ }
+
+void q_mult(__global float * R, unsigned int row_n, unsigned int col_n, __global float * b_v, __local float * R_u, unsigned int col_n_u){
+ for(unsigned int i = get_local_id(0); i < col_n_u; i+= get_local_size(0)){
+ apply_q_trans_vec(R, row_n, col_n, b_v, R_u + row_n*i);
+ }
+}
+
+void matrix_from_global_to_local(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+ for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+ for(unsigned int j = 0; j < row_n; ++j){
+ l_M[i*row_n + j] = g_M[mat_start_ind + i*row_n + j];
+ }
+ }
+}
+
+void matrix_from_local_to_global(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+ for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+ for(unsigned int j = 0; j < row_n; ++j){
+ g_M[mat_start_ind + i*row_n + j] = l_M[i*row_n + j];
+ }
+ }
+}
+
+
+
+__kernel void block_q_mult(__global float * global_R,
+ __global unsigned int * block_ind,
+ __global float * global_R_u,
+ __global unsigned int *block_ind_u,
+ __global float * b_v,
+ __global unsigned int * start_bv_inds,
+ __global unsigned int * matrix_dimensions,
+ __global unsigned int * matrix_dimensions_u,
+ __global unsigned int * g_is_update,
+ __local float * local_R_u,
+ unsigned int block_elems_num){
+ for(unsigned int i = get_group_id(0); i < block_elems_num; i += get_num_groups(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && (g_is_update[i] > 0)){
+ //matrix_from_global_to_local(R, local_buff_R, matrix_dimensions[2*i], matrix_dimensions[2*i + 1], start_matrix_inds[i]);
+ matrix_from_global_to_local(global_R_u, local_R_u, matrix_dimensions_u[2*i], matrix_dimensions_u[2*i+ 1], block_ind_u[i]);
+ barrier(CLK_LOCAL_MEM_FENCE);
+ q_mult(global_R + block_ind[i], matrix_dimensions[2*i], matrix_dimensions[2*i + 1], b_v + start_bv_inds[i], local_R_u,
+ matrix_dimensions_u[2*i + 1]);
+ barrier(CLK_LOCAL_MEM_FENCE);
+ matrix_from_local_to_global(global_R_u, local_R_u, matrix_dimensions_u[2*i], matrix_dimensions_u[2*i + 1], block_ind_u[i]);
+ }
+ }
+}
\ No newline at end of file
diff --git a/auxiliary/spai/align1/block_qr.cl b/auxiliary/spai/align1/block_qr.cl
new file mode 100644
index 0000000..c4b39b1
--- /dev/null
+++ b/auxiliary/spai/align1/block_qr.cl
@@ -0,0 +1,130 @@
+void dot_prod(__local const float* A, unsigned int n, unsigned int beg_ind, float* res){
+ *res = 0;
+ for(unsigned int i = beg_ind; i < n; ++i){
+ *res += A[(beg_ind-1)*n + i]*A[(beg_ind-1)*n + i];
+ }
+}
+
+void vector_div(__global float* v, unsigned int beg_ind, float b, unsigned int n){
+ for(unsigned int i = beg_ind; i < n; ++i){
+ v[i] /= b;
+ }
+}
+
+void copy_vector(__local const float* A, __global float* v, const unsigned int beg_ind, const unsigned int n){
+ for(unsigned int i = beg_ind; i < n; ++i){
+ v[i] = A[(beg_ind-1)*n + i];
+ }
+}
+
+
+void householder_vector(__local const float* A, unsigned int j, unsigned int n, __global float* v, __global float* b){
+ float sg;
+ dot_prod(A, n, j+1, &sg);
+ copy_vector(A, v, j+1, n);
+ float mu;
+ v[j] = 1.0;
+ //print_contigious_vector(v, v_start_ind, n);
+ if(sg == 0){
+ *b = 0;
+ }
+ else{
+ mu = sqrt(A[j*n + j]*A[ j*n + j] + sg);
+ if(A[ j*n + j] <= 0){
+ v[j] = A[ j*n + j] - mu;
+ }else{
+ v[j] = -sg/(A[ j*n + j] + mu);
+ }
+ *b = 2*(v[j]*v[j])/(sg + v[j]*v[j]);
+ //*b = (2*v[j]*v[j])/(sg + (v[j])*(v[j]));
+ vector_div(v, j, v[j], n);
+ //print_contigious_vector(v, v_start_ind, n);
+ }
+}
+
+void custom_inner_prod(__local const float* A, __global float* v, unsigned int col_ind, unsigned int row_num, unsigned int start_ind, float* res){
+ for(unsigned int i = start_ind; i < row_num; ++i){
+ *res += A[col_ind*row_num + i]*v[i];
+ }
+}
+//
+void apply_householder_reflection(__local float* A, unsigned int row_n, unsigned int col_n, unsigned int iter_cnt, __global float* v, float b){
+ float in_prod_res;
+ for(unsigned int i= iter_cnt + get_local_id(0); i < col_n; i+=get_local_size(0)){
+ in_prod_res = 0.0;
+ custom_inner_prod(A, v, i, row_n, iter_cnt, &in_prod_res);
+ for(unsigned int j = iter_cnt; j < row_n; ++j){
+ A[ i*row_n + j] -= b*in_prod_res* v[j];
+ }
+ }
+
+}
+
+void store_householder_vector(__local float* A, unsigned int ind, unsigned int n, __global float* v){
+ for(unsigned int i = ind; i < n; ++i){
+ A[ (ind-1)*n + i] = v[i];
+ }
+}
+
+void single_qr( __local float* R, __global unsigned int* matrix_dimensions, __global float* b_v, __global float* v, unsigned int matrix_ind){
+ //matrix_dimensions[0] - number of rows
+ //matrix_dimensions[1] - number of columns
+ unsigned int col_n = matrix_dimensions[2*matrix_ind + 1];
+ unsigned int row_n = matrix_dimensions[2*matrix_ind];
+
+ if((col_n == row_n)&&(row_n == 1)){
+ b_v[0] = 0.0;
+ return;
+ }
+ for(unsigned int i = 0; i < col_n; ++i){
+ if(get_local_id(0) == 0){
+ householder_vector(R, i, row_n, v, b_v + i);
+ }
+ barrier(CLK_LOCAL_MEM_FENCE);
+ apply_householder_reflection(R, row_n, col_n, i, v, b_v[i]);
+ barrier(CLK_LOCAL_MEM_FENCE);
+ if(get_local_id(0) == 0){
+ if(i < matrix_dimensions[2*matrix_ind]){
+ store_householder_vector(R, i+1, row_n, v);
+ }
+ }
+ }
+}
+
+void matrix_from_global_to_local_qr(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+ for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+ for(unsigned int j = 0; j < row_n; ++j){
+ l_M[i*row_n + j] = g_M[mat_start_ind + i*row_n + j];
+ }
+ }
+}
+void matrix_from_local_to_global_qr(__global float* g_M, __local float* l_M, unsigned int row_n, unsigned int col_n, unsigned int mat_start_ind){
+ for(unsigned int i = get_local_id(0); i < col_n; i+= get_local_size(0)){
+ for(unsigned int j = 0; j < row_n; ++j){
+ g_M[mat_start_ind + i*row_n + j] = l_M[i*row_n + j];
+ }
+ }
+}
+
+
+__kernel void block_qr(
+ __global float* R,
+ __global unsigned int* matrix_dimensions,
+ __global float* b_v,
+ __global float* v,
+ __global unsigned int* start_matrix_inds,
+ __global unsigned int* start_bv_inds,
+ __global unsigned int* start_v_inds,
+ __global unsigned int * g_is_update,
+ __local float* local_buff_R,
+ unsigned int block_elems_num){
+ for(unsigned int i = get_group_id(0); i < block_elems_num; i += get_num_groups(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+ matrix_from_global_to_local_qr(R, local_buff_R, matrix_dimensions[2*i], matrix_dimensions[2*i + 1], start_matrix_inds[i]);
+ barrier(CLK_LOCAL_MEM_FENCE);
+ single_qr(local_buff_R, matrix_dimensions, b_v + start_bv_inds[i], v + start_v_inds[i], i);
+ barrier(CLK_LOCAL_MEM_FENCE);
+ matrix_from_local_to_global_qr(R, local_buff_R, matrix_dimensions[2*i], matrix_dimensions[2*i + 1], start_matrix_inds[i]);
+ }
+ }
+}
diff --git a/auxiliary/spai/align1/block_qr_assembly.cl b/auxiliary/spai/align1/block_qr_assembly.cl
new file mode 100644
index 0000000..a702f37
--- /dev/null
+++ b/auxiliary/spai/align1/block_qr_assembly.cl
@@ -0,0 +1,57 @@
+void assemble_upper_part(__global float * R_q,
+ unsigned int row_n_q, unsigned int col_n_q, __global float * R_u,
+ unsigned int row_n_u, unsigned int col_n_u,
+ unsigned int col_n, unsigned int diff){
+ for(unsigned int i = 0; i < col_n_q; ++i){
+ for(unsigned int j = 0; j < diff; ++j){
+ R_q[ i*row_n_q + j] = R_u[ i*row_n_u + j + col_n ];
+ }
+ }
+ }
+
+
+void assemble_lower_part(__global float * R_q, unsigned int row_n_q, unsigned int col_n_q, __global float * R_u_u,
+ unsigned int row_n_u_u, unsigned int col_n_u_u,
+ unsigned int diff){
+ for(unsigned int i = 0; i < col_n_u_u; ++i){
+ for(unsigned int j = 0; j < row_n_u_u; ++j){
+ R_q[i*row_n_q + j + diff] = R_u_u[i*row_n_u_u + j];
+ }
+ }
+}
+
+
+
+void assemble_qr_block(__global float * R_q, unsigned int row_n_q, unsigned int col_n_q, __global float * R_u, unsigned int row_n_u,
+ unsigned int col_n_u, __global float * R_u_u, unsigned int row_n_u_u, unsigned int col_n_u_u, unsigned int col_n){
+ unsigned int diff = row_n_u - col_n;
+ assemble_upper_part(R_q, row_n_q, col_n_q, R_u, row_n_u, col_n_u, col_n, diff);
+ if(diff > 0){
+ assemble_lower_part(R_q, row_n_q, col_n_q, R_u_u, row_n_u_u, col_n_u_u, diff);
+ }
+}
+
+__kernel void block_qr_assembly(
+ __global unsigned int * matrix_dimensions,
+ __global float * R_u,
+ __global unsigned int * block_ind_u,
+ __global unsigned int * matrix_dimensions_u,
+ __global float * R_u_u,
+ __global unsigned int * block_ind_u_u,
+ __global unsigned int * matrix_dimensions_u_u,
+ __global float * R_q,
+ __global unsigned int * block_ind_q,
+ __global unsigned int * matrix_dimensions_q,
+ __global unsigned int * g_is_update,
+ //__local float * local_R_q,
+ unsigned int block_elems_num)
+{
+ for(unsigned int i = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+ //
+ assemble_qr_block(R_q + block_ind_q[i], matrix_dimensions_q[2*i], matrix_dimensions_q[2*i + 1], R_u + block_ind_u[i], matrix_dimensions_u[2*i],
+ matrix_dimensions_u[2*i + 1], R_u_u + block_ind_u_u[i], matrix_dimensions_u_u[2*i], matrix_dimensions_u_u[2*i + 1], matrix_dimensions[2*i + 1]);
+
+ }
+ }
+}
diff --git a/auxiliary/spai/align1/block_qr_assembly_1.cl b/auxiliary/spai/align1/block_qr_assembly_1.cl
new file mode 100644
index 0000000..e3b9e1e
--- /dev/null
+++ b/auxiliary/spai/align1/block_qr_assembly_1.cl
@@ -0,0 +1,36 @@
+void assemble_upper_part_1(__global float * R_q, unsigned int row_n_q, unsigned int col_n_q, __global float * R_u,
+ unsigned int row_n_u, unsigned int col_n_u,
+ unsigned int col_n, unsigned int diff){
+ for(unsigned int i = 0; i < col_n_q; ++i){
+ for(unsigned int j = 0; j < diff; ++j){
+ R_q[ i*row_n_q + j] = R_u[i*row_n_u + j + col_n ];
+ }
+ }
+ }
+
+
+void assemble_qr_block_1(__global float * R_q, unsigned int row_n_q, unsigned int col_n_q, __global float * R_u, unsigned int row_n_u,
+ unsigned int col_n_u, unsigned int col_n){
+ unsigned int diff = row_n_u - col_n;
+ assemble_upper_part_1(R_q, row_n_q, col_n_q, R_u, row_n_u, col_n_u, col_n, diff);
+}
+
+__kernel void block_qr_assembly_1(
+ __global unsigned int * matrix_dimensions,
+ __global float * R_u,
+ __global unsigned int * block_ind_u,
+ __global unsigned int * matrix_dimensions_u,
+ __global float * R_q,
+ __global unsigned int * block_ind_q,
+ __global unsigned int * matrix_dimensions_q,
+ __global unsigned int * g_is_update,
+ //__local float * local_R_q,
+ unsigned int block_elems_num)
+{
+ for(unsigned int i = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+ assemble_qr_block_1(R_q + block_ind_q[i], matrix_dimensions_q[2*i], matrix_dimensions_q[2*i + 1], R_u + block_ind_u[i], matrix_dimensions_u[2*i],
+ matrix_dimensions_u[2*i + 1], matrix_dimensions[2*i + 1]);
+ }
+ }
+}
diff --git a/auxiliary/spai/align1/block_r_assembly.cl b/auxiliary/spai/align1/block_r_assembly.cl
new file mode 100644
index 0000000..d00fc35
--- /dev/null
+++ b/auxiliary/spai/align1/block_r_assembly.cl
@@ -0,0 +1,68 @@
+void assemble_r(__global float * gR, unsigned int row_n_r, unsigned int col_n_r, __global float * R,
+ unsigned int row_n, unsigned int col_n)
+{
+ for(unsigned int i = 0; i < col_n; ++i){
+ for(unsigned int j = 0; j < row_n; ++j){
+ gR[i*row_n_r + j] = R[i*row_n + j ];
+ }
+ }
+}
+
+void assemble_r_u(__global float * gR,
+ unsigned int row_n_r, unsigned int col_n_r, __global float * R_u, unsigned int row_n_u, unsigned int col_n_u,
+ unsigned int col_n)
+{
+ for(unsigned int i = 0; i < col_n_u; ++i){
+ for(unsigned int j = 0; j < col_n; ++j){
+ gR[ (i+col_n)*row_n_r + j] = R_u[ i*row_n_u + j];
+ }
+ }
+}
+
+
+void assemble_r_u_u(__global float * gR, unsigned int row_n_r, unsigned int col_n_r, __global float * R_u_u, unsigned int row_n_u_u,
+ unsigned int col_n_u_u, unsigned int col_n)
+{
+ for(unsigned int i = 0; i < col_n_u_u; ++i){
+ for(unsigned int j = 0; j < row_n_u_u; ++j){
+ gR[(col_n+i)*row_n_r + j + col_n] = R_u_u[i*row_n_u_u + j];
+ }
+ }
+}
+
+void assemble_r_block(__global float * gR, unsigned int row_n_r, unsigned int col_n_r, __global float * R, unsigned int row_n,
+ unsigned int col_n, __global float * R_u, unsigned int row_n_u, unsigned int col_n_u, __global float * R_u_u,
+ unsigned int row_n_u_u, unsigned int col_n_u_u){
+ assemble_r(gR, row_n_r, col_n_r, R, row_n, col_n);
+ assemble_r_u(gR, row_n_r, col_n_r, R_u, row_n_u, col_n_u, col_n);
+ assemble_r_u_u(gR, row_n_r, col_n_r, R_u_u, row_n_u_u, col_n_u_u, col_n);
+}
+
+
+__kernel void block_r_assembly(
+ __global float * R,
+ __global unsigned int * block_ind,
+ __global unsigned int * matrix_dimensions,
+ __global float * R_u,
+ __global unsigned int * block_ind_u,
+ __global unsigned int * matrix_dimensions_u,
+ __global float * R_u_u,
+ __global unsigned int * block_ind_u_u,
+ __global unsigned int * matrix_dimensions_u_u,
+ __global float * g_R,
+ __global unsigned int * block_ind_r,
+ __global unsigned int * matrix_dimensions_r,
+ __global unsigned int * g_is_update,
+ //__local float * local_gR,
+ unsigned int block_elems_num)
+{
+ for(unsigned int i = get_global_id(0); i < block_elems_num; i += get_global_size(0)){
+ if((matrix_dimensions[2*i] > 0) && (matrix_dimensions[2*i + 1] > 0) && g_is_update[i] > 0){
+
+ assemble_r_block(g_R + block_ind_r[i], matrix_dimensions_r[2*i], matrix_dimensions_r[2*i + 1], R + block_ind[i], matrix_dimensions[2*i],
+ matrix_dimensions[2*i + 1], R_u + block_ind_u[i], matrix_dimensions_u[2*i], matrix_dimensions_u[2*i + 1],
+ R_u_u + block_ind_u_u[i], matrix_dimensions_u_u[2*i], matrix_dimensions_u_u[2*i + 1]);
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/auxiliary/vector/align1/add.cl b/auxiliary/vector/align1/add.cl
index 49bdd83..0ab59cf 100644
--- a/auxiliary/vector/align1/add.cl
+++ b/auxiliary/vector/align1/add.cl
@@ -1,11 +1,16 @@
__kernel void add(
__global const float * vec1,
- __global const float * vec2,
+ unsigned int start1,
+ unsigned int size1,
+ __global const float * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float * result,
- unsigned int size)
+ unsigned int start3,
+ unsigned int size3)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec1[i] + vec2[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] + vec2[i+start2];
}
diff --git a/auxiliary/vector/align1/clear.cl b/auxiliary/vector/align1/clear.cl
index d3a6e48..78d488d 100644
--- a/auxiliary/vector/align1/clear.cl
+++ b/auxiliary/vector/align1/clear.cl
@@ -1,9 +1,10 @@
__kernel void clear(
__global float * vec,
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec[i] = 0;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec[i+start1] = 0;
}
diff --git a/auxiliary/vector/align1/cpu_inplace_mul_add.cl b/auxiliary/vector/align1/cpu_inplace_mul_add.cl
index 4e39226..d020712 100644
--- a/auxiliary/vector/align1/cpu_inplace_mul_add.cl
+++ b/auxiliary/vector/align1/cpu_inplace_mul_add.cl
@@ -1,12 +1,14 @@
__kernel void cpu_inplace_mul_add(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- float factor,
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ float factor)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] += vec2[i] * factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec1[i+start1] += vec2[i+start2] * factor;
}
diff --git a/auxiliary/vector/align1/cpu_inplace_mult.cl b/auxiliary/vector/align1/cpu_inplace_mult.cl
index 0b0eeec..9c4d3ff 100644
--- a/auxiliary/vector/align1/cpu_inplace_mult.cl
+++ b/auxiliary/vector/align1/cpu_inplace_mult.cl
@@ -1,10 +1,11 @@
__kernel void cpu_inplace_mult(
__global float * vec,
- float factor,
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ float factor)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec[i] *= factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec[i+start1] *= factor;
}
diff --git a/auxiliary/vector/align1/cpu_mul_add.cl b/auxiliary/vector/align1/cpu_mul_add.cl
index 8ac0eae..bab4419 100644
--- a/auxiliary/vector/align1/cpu_mul_add.cl
+++ b/auxiliary/vector/align1/cpu_mul_add.cl
@@ -1,13 +1,18 @@
__kernel void cpu_mul_add(
__global const float * vec1,
+ unsigned int start1,
+ unsigned int size1,
float factor,
__global const float * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float * result,
- unsigned int size
+ unsigned int start3,
+ unsigned int size3
)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec1[i] * factor + vec2[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
}
diff --git a/auxiliary/vector/align1/cpu_mult.cl b/auxiliary/vector/align1/cpu_mult.cl
index 25f9684..478cabc 100644
--- a/auxiliary/vector/align1/cpu_mult.cl
+++ b/auxiliary/vector/align1/cpu_mult.cl
@@ -1,12 +1,15 @@
__kernel void cpu_mult(
__global const float * vec,
+ unsigned int start1,
+ unsigned int size1,
float factor,
__global float * result,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec[i] * factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start2] = vec[i+start1] * factor;
}
diff --git a/auxiliary/vector/align1/diag_precond.cl b/auxiliary/vector/align1/diag_precond.cl
index 83bf4cd..c9e30d0 100644
--- a/auxiliary/vector/align1/diag_precond.cl
+++ b/auxiliary/vector/align1/diag_precond.cl
@@ -1,9 +1,12 @@
__kernel void diag_precond(
__global const float * diag_A_inv,
+ unsigned int start1,
+ unsigned int size1,
__global float * x,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- x[i] *= diag_A_inv[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ x[i+start2] *= diag_A_inv[i+start1];
}
diff --git a/auxiliary/vector/align1/divide.cl b/auxiliary/vector/align1/divide.cl
index 709dc4b..2782dc6 100644
--- a/auxiliary/vector/align1/divide.cl
+++ b/auxiliary/vector/align1/divide.cl
@@ -2,12 +2,15 @@
// Note: name 'div' is not allowed by the jit-compiler
__kernel void divide(
__global const float * vec,
+ unsigned int start1,
+ unsigned int size1,
__global const float * fac, //note: CPU variant is mapped to prod_scalar
__global float * result,
- unsigned int size)
+ unsigned int start3,
+ unsigned int size3)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec[i] / factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start3] = vec[i+start1] / factor;
}
diff --git a/auxiliary/vector/align1/index_norm_inf.cl b/auxiliary/vector/align1/index_norm_inf.cl
index ea71847..32590d1 100644
--- a/auxiliary/vector/align1/index_norm_inf.cl
+++ b/auxiliary/vector/align1/index_norm_inf.cl
@@ -1,16 +1,17 @@
//index_norm_inf:
unsigned int float_vector1_index_norm_inf_impl(
__global const float * vec,
- unsigned int size,
+ unsigned int start1,
+ unsigned int size1,
__local float * float_buffer,
__local unsigned int * index_buffer)
{
//step 1: fill buffer:
float cur_max = 0.0f;
float tmp;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
{
- tmp = fabs(vec[i]);
+ tmp = fabs(vec[i+start1]);
if (cur_max < tmp)
{
float_buffer[get_global_id(0)] = tmp;
@@ -42,12 +43,13 @@ unsigned int float_vector1_index_norm_inf_impl(
__kernel void index_norm_inf(
__global float * vec,
- unsigned int size,
+ unsigned int start1,
+ unsigned int size1,
__local float * float_buffer,
__local unsigned int * index_buffer,
global unsigned int * result)
{
- unsigned int tmp = float_vector1_index_norm_inf_impl(vec, size, float_buffer, index_buffer);
+ unsigned int tmp = float_vector1_index_norm_inf_impl(vec, start1, size1, float_buffer, index_buffer);
if (get_global_id(0) == 0) *result = tmp;
}
diff --git a/auxiliary/vector/align1/inner_prod.cl b/auxiliary/vector/align1/inner_prod.cl
index 87f6bc7..5f5628e 100644
--- a/auxiliary/vector/align1/inner_prod.cl
+++ b/auxiliary/vector/align1/inner_prod.cl
@@ -13,14 +13,16 @@ void helper_inner_prod_parallel_reduction( __local float * tmp_buffer )
//////// inner products:
float impl_inner_prod(
__global const float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- unsigned int start_index,
- unsigned int end_index,
+ unsigned int start2,
+ unsigned int size2,
__local float * tmp_buffer)
{
float tmp = 0;
- for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))
- tmp += vec1[i] * vec2[i];
+ for (unsigned int i = get_local_id(0); i < size1; i += get_local_size(0))
+ tmp += vec1[i+start1] * vec2[i+start2];
tmp_buffer[get_local_id(0)] = tmp;
helper_inner_prod_parallel_reduction(tmp_buffer);
@@ -31,15 +33,20 @@ float impl_inner_prod(
__kernel void inner_prod(
__global const float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- unsigned int size,
+ unsigned int start2,
+ unsigned int size2,
__local float * tmp_buffer,
global float * group_buffer)
{
float tmp = impl_inner_prod(vec1,
+ ( get_group_id(0) * size1) / get_num_groups(0) + start1,
+ ((get_group_id(0) + 1) * size1) / get_num_groups(0) - ( get_group_id(0) * size1) / get_num_groups(0),
vec2,
- ( get_group_id(0) * size) / get_num_groups(0),
- ((get_group_id(0) + 1) * size) / get_num_groups(0),
+ ( get_group_id(0) * size2) / get_num_groups(0) + start2,
+ ((get_group_id(0) + 1) * size2) / get_num_groups(0) - ( get_group_id(0) * size2) / get_num_groups(0),
tmp_buffer);
if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/inplace_add.cl b/auxiliary/vector/align1/inplace_add.cl
index 73cd0e4..ab7c23d 100644
--- a/auxiliary/vector/align1/inplace_add.cl
+++ b/auxiliary/vector/align1/inplace_add.cl
@@ -1,10 +1,13 @@
__kernel void inplace_add(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] += vec2[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec1[i+start1] += vec2[i+start2];
}
diff --git a/auxiliary/vector/align1/inplace_div_add.cl b/auxiliary/vector/align1/inplace_div_add.cl
index f60088b..77820cd 100644
--- a/auxiliary/vector/align1/inplace_div_add.cl
+++ b/auxiliary/vector/align1/inplace_div_add.cl
@@ -2,13 +2,14 @@
///// divide add:
__kernel void inplace_div_add(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- __global const float * fac, //CPU variant is mapped to mult_add
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac) //CPU variant is mapped to mult_add
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] -= vec2[i] / factor;
-}
-
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2] / factor;
+}
\ No newline at end of file
diff --git a/auxiliary/vector/align1/inplace_div_sub.cl b/auxiliary/vector/align1/inplace_div_sub.cl
index 88a4591..0f2a10f 100644
--- a/auxiliary/vector/align1/inplace_div_sub.cl
+++ b/auxiliary/vector/align1/inplace_div_sub.cl
@@ -2,13 +2,15 @@
///// divide substract:
__kernel void inplace_div_sub(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- __global const float * fac, //CPU variant is mapped to mult_add
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac) //CPU variant is mapped to mult_add
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] -= vec2[i] / factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2] / factor;
}
diff --git a/auxiliary/vector/align1/inplace_divide.cl b/auxiliary/vector/align1/inplace_divide.cl
index 69ee2a8..5c935f1 100644
--- a/auxiliary/vector/align1/inplace_divide.cl
+++ b/auxiliary/vector/align1/inplace_divide.cl
@@ -1,11 +1,12 @@
__kernel void inplace_divide(
__global float * vec,
- __global const float * fac, //note: CPU variant is mapped to prod_scalar
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ __global const float * fac) //note: CPU variant is mapped to prod_scalar
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec[i] /= factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec[i+start1] /= factor;
}
diff --git a/auxiliary/vector/align1/inplace_mul_add.cl b/auxiliary/vector/align1/inplace_mul_add.cl
index ff83e8b..544f5fc 100644
--- a/auxiliary/vector/align1/inplace_mul_add.cl
+++ b/auxiliary/vector/align1/inplace_mul_add.cl
@@ -1,14 +1,16 @@
__kernel void inplace_mul_add(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- __global const float * fac,
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] += vec2[i] * factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec1[i+start1] += vec2[i+start2] * factor;
}
diff --git a/auxiliary/vector/align1/inplace_mul_sub.cl b/auxiliary/vector/align1/inplace_mul_sub.cl
index aa8df56..f0c05b2 100644
--- a/auxiliary/vector/align1/inplace_mul_sub.cl
+++ b/auxiliary/vector/align1/inplace_mul_sub.cl
@@ -1,14 +1,16 @@
__kernel void inplace_mul_sub(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- __global const float * fac, //CPU variant is mapped to mult_add
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac) //CPU variant is mapped to mult_add
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] -= vec2[i] * factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2] * factor;
}
diff --git a/auxiliary/vector/align1/inplace_mult.cl b/auxiliary/vector/align1/inplace_mult.cl
index 6112c6d..f8a8210 100644
--- a/auxiliary/vector/align1/inplace_mult.cl
+++ b/auxiliary/vector/align1/inplace_mult.cl
@@ -1,12 +1,13 @@
__kernel void inplace_mult(
__global float * vec,
- __global const float * fac,
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ __global const float * fac)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec[i] *= factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec[i+start1] *= factor;
}
diff --git a/auxiliary/vector/align1/inplace_sub.cl b/auxiliary/vector/align1/inplace_sub.cl
index 2de7013..50bffd2 100644
--- a/auxiliary/vector/align1/inplace_sub.cl
+++ b/auxiliary/vector/align1/inplace_sub.cl
@@ -1,10 +1,13 @@
__kernel void inplace_sub(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- vec1[i] -= vec2[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2];
}
diff --git a/auxiliary/vector/align1/mul_add.cl b/auxiliary/vector/align1/mul_add.cl
index 233fd8f..72cc286 100644
--- a/auxiliary/vector/align1/mul_add.cl
+++ b/auxiliary/vector/align1/mul_add.cl
@@ -1,15 +1,20 @@
__kernel void mul_add(
__global const float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * fac,
__global const float * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float * result,
- unsigned int size
+ unsigned int start3,
+ unsigned int size3
)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec1[i] * factor + vec2[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
}
diff --git a/auxiliary/vector/align1/mul_sub.cl b/auxiliary/vector/align1/mul_sub.cl
index 37d5622..860e867 100644
--- a/auxiliary/vector/align1/mul_sub.cl
+++ b/auxiliary/vector/align1/mul_sub.cl
@@ -2,14 +2,19 @@
///// multiply subtract:
__kernel void mul_sub(
__global const float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * fac,
__global const float * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float * result,
- unsigned int size
+ unsigned int start3,
+ unsigned int size3
)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec1[i] * factor - vec2[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] * factor - vec2[i+start2];
}
diff --git a/auxiliary/vector/align1/mult.cl b/auxiliary/vector/align1/mult.cl
index 58313ea..1915983 100644
--- a/auxiliary/vector/align1/mult.cl
+++ b/auxiliary/vector/align1/mult.cl
@@ -1,12 +1,15 @@
__kernel void mult(
__global const float * vec,
+ unsigned int start1,
+ unsigned int size1,
__global const float * fac,
__global float * result,
- unsigned int size)
+ unsigned int start3,
+ unsigned int size3)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec[i] * factor;
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start3] = vec[i+start1] * factor;
}
diff --git a/auxiliary/vector/align1/norm_1.cl b/auxiliary/vector/align1/norm_1.cl
index 3c4da7d..006ab3a 100644
--- a/auxiliary/vector/align1/norm_1.cl
+++ b/auxiliary/vector/align1/norm_1.cl
@@ -29,13 +29,14 @@ float impl_norm_1(
__kernel void norm_1(
__global const float * vec,
- unsigned int size,
+ unsigned int start1,
+ unsigned int size1,
__local float * tmp_buffer,
global float * group_buffer)
{
float tmp = impl_norm_1(vec,
- ( get_group_id(0) * size) / get_num_groups(0),
- ((get_group_id(0) + 1) * size) / get_num_groups(0),
+ ( get_group_id(0) * size1) / get_num_groups(0) + start1,
+ ((get_group_id(0) + 1) * size1) / get_num_groups(0) + start1,
tmp_buffer);
if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/norm_2.cl b/auxiliary/vector/align1/norm_2.cl
index 6633338..bc45d17 100644
--- a/auxiliary/vector/align1/norm_2.cl
+++ b/auxiliary/vector/align1/norm_2.cl
@@ -32,13 +32,14 @@ float impl_norm_2(
__kernel void norm_2(
__global const float * vec,
- unsigned int size,
+ unsigned int start1,
+ unsigned int size1,
__local float * tmp_buffer,
global float * group_buffer)
{
float tmp = impl_norm_2(vec,
- ( get_group_id(0) * size) / get_num_groups(0),
- ((get_group_id(0) + 1) * size) / get_num_groups(0),
+ ( get_group_id(0) * size1) / get_num_groups(0) + start1,
+ ((get_group_id(0) + 1) * size1) / get_num_groups(0) + start1,
tmp_buffer);
if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/norm_inf.cl b/auxiliary/vector/align1/norm_inf.cl
index 02e23cc..5eaf719 100644
--- a/auxiliary/vector/align1/norm_inf.cl
+++ b/auxiliary/vector/align1/norm_inf.cl
@@ -24,13 +24,14 @@ float impl_norm_inf(
__kernel void norm_inf(
__global const float * vec,
- unsigned int size,
+ unsigned int start1,
+ unsigned int size1,
__local float * tmp_buffer,
global float * group_buffer)
{
float tmp = impl_norm_inf(vec,
- ( get_group_id(0) * size) / get_num_groups(0),
- ((get_group_id(0) + 1) * size) / get_num_groups(0),
+ ( get_group_id(0) * size1) / get_num_groups(0) + start1,
+ ((get_group_id(0) + 1) * size1) / get_num_groups(0) + start1,
tmp_buffer);
if (get_local_id(0) == 0)
diff --git a/auxiliary/vector/align1/plane_rotation.cl b/auxiliary/vector/align1/plane_rotation.cl
index 4a85d9a..28d6c91 100644
--- a/auxiliary/vector/align1/plane_rotation.cl
+++ b/auxiliary/vector/align1/plane_rotation.cl
@@ -2,21 +2,24 @@
////// plane rotation: (x,y) <- (\alpha x + \beta y, -\beta x + \alpha y)
__kernel void plane_rotation(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global float * vec2,
+ unsigned int start2,
+ unsigned int size2,
float alpha,
- float beta,
- unsigned int size)
+ float beta)
{
float tmp1 = 0;
float tmp2 = 0;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
{
- tmp1 = vec1[i];
- tmp2 = vec2[i];
+ tmp1 = vec1[i+start1];
+ tmp2 = vec2[i+start2];
- vec1[i] = alpha * tmp1 + beta * tmp2;
- vec2[i] = alpha * tmp2 - beta * tmp1;
+ vec1[i+start1] = alpha * tmp1 + beta * tmp2;
+ vec2[i+start2] = alpha * tmp2 - beta * tmp1;
}
}
diff --git a/auxiliary/vector/align1/sqrt_sum.cl b/auxiliary/vector/align1/sqrt_sum.cl
index 8454323..3debe8a 100644
--- a/auxiliary/vector/align1/sqrt_sum.cl
+++ b/auxiliary/vector/align1/sqrt_sum.cl
@@ -2,20 +2,20 @@
__kernel void sqrt_sum(
__global float * vec1,
- __global float * result,
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ __global float * result)
{
- //parallel reduction on global memory:
-
+ //parallel reduction on global memory: (make sure get_global_size(0) is a power of 2)
for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)
{
if (get_global_id(0) < stride)
- vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];
+ vec1[get_global_id(0)+start1] += vec1[get_global_id(0)+start1+stride];
barrier(CLK_GLOBAL_MEM_FENCE);
}
if (get_global_id(0) == 0)
- *result = sqrt(vec1[0]);
+ *result = sqrt(vec1[start1]);
}
diff --git a/auxiliary/vector/align1/sub.cl b/auxiliary/vector/align1/sub.cl
index 2156af8..48d3317 100644
--- a/auxiliary/vector/align1/sub.cl
+++ b/auxiliary/vector/align1/sub.cl
@@ -1,11 +1,16 @@
__kernel void sub(
__global const float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float * result,
- unsigned int size)
+ unsigned int start3,
+ unsigned int size3)
{
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
- result[i] = vec1[i] - vec2[i];
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] - vec2[i+start2];
}
diff --git a/auxiliary/vector/align1/sum.cl b/auxiliary/vector/align1/sum.cl
index 7f3f9fd..7e51c52 100644
--- a/auxiliary/vector/align1/sum.cl
+++ b/auxiliary/vector/align1/sum.cl
@@ -2,14 +2,15 @@
__kernel void sum(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global float * result)
{
- //parallel reduction on global memory:
-
+ //parallel reduction on global memory (make sure get_global_size(0) is a power of 2)
for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)
{
if (get_global_id(0) < stride)
- vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];
+ vec1[get_global_id(0)+start1] += vec1[get_global_id(0)+start1+stride];
barrier(CLK_GLOBAL_MEM_FENCE);
}
diff --git a/auxiliary/vector/align1/swap.cl b/auxiliary/vector/align1/swap.cl
index 25fa2e6..b1bc41e 100644
--- a/auxiliary/vector/align1/swap.cl
+++ b/auxiliary/vector/align1/swap.cl
@@ -3,16 +3,19 @@
////// swap:
__kernel void swap(
__global float * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global float * vec2,
- unsigned int size
+ unsigned int start2,
+ unsigned int size2
)
{
float tmp;
- for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))
+ for (unsigned int i = get_global_id(0); i < size1; i += get_global_size(0))
{
- tmp = vec2[i];
- vec2[i] = vec1[i];
- vec1[i] = tmp;
+ tmp = vec2[i+start2];
+ vec2[i+start2] = vec1[i+start1];
+ vec1[i+start1] = tmp;
}
}
diff --git a/auxiliary/vector/align1/vmax.cl b/auxiliary/vector/align1/vmax.cl
index 2d3d1ae..0888b53 100644
--- a/auxiliary/vector/align1/vmax.cl
+++ b/auxiliary/vector/align1/vmax.cl
@@ -2,18 +2,19 @@
__kernel void vmax(
__global float * vec1,
- __global float * result,
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ __global float * result)
{
- //parallel reduction on global memory:
+ //parallel reduction on global memory (make sure that size is a power of 2)
for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)
{
if (get_global_id(0) < stride)
- vec1[get_global_id(0)] = fmax(vec1[get_global_id(0)+stride], vec1[get_global_id(0)]);
+ vec1[get_global_id(0)+start1] = fmax(vec1[get_global_id(0)+start1+stride], vec1[get_global_id(0)+start1]);
barrier(CLK_GLOBAL_MEM_FENCE);
}
if (get_global_id(0) == 0)
- *result = vec1[0];
+ *result = vec1[start1];
}
diff --git a/auxiliary/vector/align16/add.cl b/auxiliary/vector/align16/add.cl
index 23086fe..6e786b0 100644
--- a/auxiliary/vector/align16/add.cl
+++ b/auxiliary/vector/align16/add.cl
@@ -1,12 +1,18 @@
__kernel void add(
__global const float16 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float16 * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float16 * result,
- unsigned int size)
+ unsigned int start3,
+ unsigned int size3)
{
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- result[i] = vec1[i] + vec2[i];
+ unsigned int i_end = size/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] + vec2[i+start2];
}
diff --git a/auxiliary/vector/align16/cpu_inplace_mul.cl b/auxiliary/vector/align16/cpu_inplace_mul.cl
index 8ba7169..2eba4bf 100644
--- a/auxiliary/vector/align16/cpu_inplace_mul.cl
+++ b/auxiliary/vector/align16/cpu_inplace_mul.cl
@@ -1,10 +1,12 @@
__kernel void cpu_inplace_mult(
__global float16 * vec,
- float factor,
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ float factor)
{
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- vec[i] *= factor;
+ unsigned int i_end = size1/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec[i+start1] *= factor;
}
diff --git a/auxiliary/vector/align16/cpu_mult.cl b/auxiliary/vector/align16/cpu_mult.cl
index 544b2f5..6c36326 100644
--- a/auxiliary/vector/align16/cpu_mult.cl
+++ b/auxiliary/vector/align16/cpu_mult.cl
@@ -1,11 +1,15 @@
__kernel void cpu_mult(
__global const float16 * vec,
+ unsigned int start1,
+ unsigned int size1,
float factor,
__global float16 * result,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- result[i] = vec[i] * factor;
+ unsigned int i_end = size1/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ result[i+start2] = vec[i+start1] * factor;
}
diff --git a/auxiliary/vector/align16/divide.cl b/auxiliary/vector/align16/divide.cl
index 608ae2d..a3b3119 100644
--- a/auxiliary/vector/align16/divide.cl
+++ b/auxiliary/vector/align16/divide.cl
@@ -2,13 +2,17 @@
//Note: 'div' cannot be used because of complaints by the jit-compiler
__kernel void divide(
__global const float16 * vec,
+ unsigned int start1,
+ unsigned int size1,
__global const float * fac, //note: CPU variant is mapped to prod_scalar
__global float16 * result,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- result[i] = vec[i] / factor;
+ unsigned int i_end = size/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ result[i+start2] = vec[i+start1] / factor;
}
diff --git a/auxiliary/vector/align16/inplace_add.cl b/auxiliary/vector/align16/inplace_add.cl
index 6f9d194..76f4e45 100644
--- a/auxiliary/vector/align16/inplace_add.cl
+++ b/auxiliary/vector/align16/inplace_add.cl
@@ -1,10 +1,14 @@
__kernel void inplace_add(
__global float16 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float16 * vec2,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- vec1[i] += vec2[i];
+ unsigned int i_end = size1/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec1[i+start1] += vec2[i+start2];
}
diff --git a/auxiliary/vector/align16/inplace_divide.cl b/auxiliary/vector/align16/inplace_divide.cl
index 6b05848..01150e8 100644
--- a/auxiliary/vector/align16/inplace_divide.cl
+++ b/auxiliary/vector/align16/inplace_divide.cl
@@ -2,11 +2,13 @@
__kernel void inplace_divide(
__global float16 * vec,
- __global const float * fac, //note: CPU variant is mapped to prod_scalar
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ __global const float * fac) //note: CPU variant is mapped to prod_scalar
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- vec[i] /= factor;
+ unsigned int i_end = size1/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec[i+start1] /= factor;
}
diff --git a/auxiliary/vector/align16/inplace_mult.cl b/auxiliary/vector/align16/inplace_mult.cl
index d10d974..51df457 100644
--- a/auxiliary/vector/align16/inplace_mult.cl
+++ b/auxiliary/vector/align16/inplace_mult.cl
@@ -1,11 +1,13 @@
__kernel void inplace_mult(
__global float16 * vec,
- __global const float * fac,
- unsigned int size)
+ unsigned int start1,
+ unsigned int size1,
+ __global const float * fac)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- vec[i] *= factor;
+ unsigned int i_end = size1/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec[i+start1] *= factor;
}
diff --git a/auxiliary/vector/align16/inplace_sub.cl b/auxiliary/vector/align16/inplace_sub.cl
index 5194a1a..4e67918 100644
--- a/auxiliary/vector/align16/inplace_sub.cl
+++ b/auxiliary/vector/align16/inplace_sub.cl
@@ -1,11 +1,15 @@
__kernel void inplace_sub(
__global float16 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float16 * vec2,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- vec1[i] -= vec2[i];
+ unsigned int i_end = size1/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2];
}
diff --git a/auxiliary/vector/align16/mult.cl b/auxiliary/vector/align16/mult.cl
index a9f4929..8af3ff7 100644
--- a/auxiliary/vector/align16/mult.cl
+++ b/auxiliary/vector/align16/mult.cl
@@ -1,12 +1,16 @@
__kernel void mult(
__global const float16 * vec,
+ unsigned int start1,
+ unsigned int size1,
__global const float * fac,
__global float16 * result,
- unsigned int size)
+ unsigned int start2,
+ unsigned int size2)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- result[i] = vec[i] * factor;
+ unsigned int i_end = size1/16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ result[i+start2] = vec[i+start1] * factor;
}
diff --git a/auxiliary/vector/align16/sub.cl b/auxiliary/vector/align16/sub.cl
index a10456d..bcccdc6 100644
--- a/auxiliary/vector/align16/sub.cl
+++ b/auxiliary/vector/align16/sub.cl
@@ -1,12 +1,18 @@
__kernel void sub(
__global const float16 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float16 * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float16 * result,
- unsigned int size)
+ unsigned int start3,
+ unsigned int size3)
{
- for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))
- result[i] = vec1[i] - vec2[i];
+ unsigned int i_end = size1 / 16;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] - vec2[i+start2];
}
diff --git a/auxiliary/vector/align4/cpu_inplace_mul_add.cl b/auxiliary/vector/align4/cpu_inplace_mul_add.cl
index 385ad6c..bddcf43 100644
--- a/auxiliary/vector/align4/cpu_inplace_mul_add.cl
+++ b/auxiliary/vector/align4/cpu_inplace_mul_add.cl
@@ -1,12 +1,15 @@
__kernel void cpu_inplace_mul_add(
__global float4 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float4 * vec2,
- float factor,
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ float factor)
{
- for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
- vec1[i] += vec2[i] * factor;
+ unsigned int i_end = size1/4;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec1[i+start1] += vec2[i+start2] * factor;
}
diff --git a/auxiliary/vector/align4/cpu_mul_add.cl b/auxiliary/vector/align4/cpu_mul_add.cl
index f5a24f5..0232f8f 100644
--- a/auxiliary/vector/align4/cpu_mul_add.cl
+++ b/auxiliary/vector/align4/cpu_mul_add.cl
@@ -1,13 +1,18 @@
__kernel void cpu_mul_add(
__global const float4 * vec1,
+ unsigned int start1,
+ unsigned int size1,
float factor,
__global const float4 * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float4 * result,
- unsigned int size
- )
+ unsigned int start3,
+ unsigned int size3)
{
- for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
- result[i] = vec1[i] * factor + vec2[i];
+ unsigned int i_end = size1/4;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
}
diff --git a/auxiliary/vector/align4/inplace_div_add.cl b/auxiliary/vector/align4/inplace_div_add.cl
index 9fd2f8a..dd36960 100644
--- a/auxiliary/vector/align4/inplace_div_add.cl
+++ b/auxiliary/vector/align4/inplace_div_add.cl
@@ -1,14 +1,17 @@
__kernel void inplace_div_add(
__global float4 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float4 * vec2,
- __global const float * fac, //CPU variant is mapped to mult_add
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac) //CPU variant is mapped to mult_add
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
- vec1[i] -= vec2[i] / factor;
+ unsigned int i_end = size1 / 4;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2] / factor;
}
diff --git a/auxiliary/vector/align4/inplace_div_sub.cl b/auxiliary/vector/align4/inplace_div_sub.cl
index f5122b4..40ff851 100644
--- a/auxiliary/vector/align4/inplace_div_sub.cl
+++ b/auxiliary/vector/align4/inplace_div_sub.cl
@@ -2,14 +2,17 @@
__kernel void inplace_div_sub(
__global float4 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float4 * vec2,
- __global const float * fac, //CPU variant is mapped to mult_add
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac) //CPU variant is mapped to mult_add
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
- vec1[i] -= vec2[i] / factor;
+ unsigned int i_end = size1/4;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2] / factor;
}
diff --git a/auxiliary/vector/align4/inplace_mul_add.cl b/auxiliary/vector/align4/inplace_mul_add.cl
index 5ee8733..aab7484 100644
--- a/auxiliary/vector/align4/inplace_mul_add.cl
+++ b/auxiliary/vector/align4/inplace_mul_add.cl
@@ -1,14 +1,16 @@
__kernel void inplace_mul_add(
__global float4 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float4 * vec2,
- __global const float * fac,
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac)
{
float factor = *fac;
- unsigned int size_div_4 = size >> 2;
+ unsigned int size_div_4 = size1/4;
for (unsigned int i = get_global_id(0); i < size_div_4; i += get_global_size(0))
- vec1[i] += vec2[i] * factor;
+ vec1[i+start1] += vec2[i+start2] * factor;
}
diff --git a/auxiliary/vector/align4/inplace_mul_sub.cl b/auxiliary/vector/align4/inplace_mul_sub.cl
index 5cd6e9b..5c5f750 100644
--- a/auxiliary/vector/align4/inplace_mul_sub.cl
+++ b/auxiliary/vector/align4/inplace_mul_sub.cl
@@ -1,14 +1,17 @@
__kernel void inplace_mul_sub(
__global float4 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float4 * vec2,
- __global const float * fac, //CPU variant is mapped to mult_add
- unsigned int size
- )
+ unsigned int start2,
+ unsigned int size2,
+ __global const float * fac) //CPU variant is mapped to mult_add
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
- vec1[i] -= vec2[i] * factor;
+ unsigned int i_end = size/4;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ vec1[i+start1] -= vec2[i+start2] * factor;
}
diff --git a/auxiliary/vector/align4/mul_add.cl b/auxiliary/vector/align4/mul_add.cl
index 51dfc08..39327bc 100644
--- a/auxiliary/vector/align4/mul_add.cl
+++ b/auxiliary/vector/align4/mul_add.cl
@@ -1,14 +1,19 @@
__kernel void mul_add(
__global const float4 * vec1,
+ unsigned int start1,
+ unsigned int size1,
__global const float * fac,
__global const float4 * vec2,
+ unsigned int start2,
+ unsigned int size2,
__global float4 * result,
- unsigned int size
- )
+ unsigned int start3,
+ unsigned int size3)
{
float factor = *fac;
- for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))
- result[i] = vec1[i] * factor + vec2[i];
+ unsigned int i_end = size1/4;
+ for (unsigned int i = get_global_id(0); i < i_end; i += get_global_size(0))
+ result[i+start3] = vec1[i+start1] * factor + vec2[i+start2];
}
diff --git a/build/README b/build/README
index 0d8bfb0..c82c8ab 100644
--- a/build/README
+++ b/build/README
@@ -1 +1,9 @@
-This is the build directory of ViennaCL.
+This is the build directory of ViennaCL. Build here using
+$> cmake ..
+$> make
+A wider range of options is available with
+$> ccmake ..
+or
+#> cmake-gui ..
+
+If you wish to use Boost, but CMake cannot find it, customize BOOSTPATH variable in ../CMakeLists.txt.
diff --git a/cmake/FindMTL.cmake b/cmake/FindMTL.cmake
new file mode 100644
index 0000000..9f45d6f
--- /dev/null
+++ b/cmake/FindMTL.cmake
@@ -0,0 +1,7 @@
+SET(MTL_INCLUDE_DIRS "${MTL_DIR}/../../include")
+find_package(Boost 1.36 REQUIRED)
+if(Boost_FOUND)
+ LIST(APPEND MTL_INCLUDE_DIRS ${Boost_INCLUDE_DIRS})
+endif(Boost_FOUND)
+
+include_directories(${MTL_INCLUDE_DIRS})
diff --git a/cmake/FindOpenCL.cmake b/cmake/FindOpenCL.cmake
new file mode 100644
index 0000000..e77ee3c
--- /dev/null
+++ b/cmake/FindOpenCL.cmake
@@ -0,0 +1,80 @@
+# - Find the OpenCL headers and library
+#
+# Defines the following if found:
+# OPENCL_FOUND : TRUE if found, FALSE otherwise
+# OPENCL_INCLUDE_DIRS : Include directories for OpenCL
+# OPENCL_LIBRARIES : The libraries to link against
+#
+# The user can set the OPENCLROOT environment variable to help finding OpenCL
+# if it is installed in a non-standard place.
+
+set(ENV_ATISTREAMSDKROOT $ENV{ATISTREAMSDKROOT})
+if(ENV_ATISTREAMSDKROOT)
+ set(ENV_OPENCLROOT $ENV{ATISTREAMSDKROOT})
+endif(ENV_ATISTREAMSDKROOT)
+
+set(ENV_AMDAPPSDKROOT $ENV{AMDAPPSDKROOT})
+if(ENV_AMDAPPSDKROOT)
+ set(ENV_OPENCLROOT $ENV{AMDAPPSDKROOT})
+endif(ENV_AMDAPPSDKROOT)
+
+set(ENV_OPENCLROOT2 $ENV{OPENCLROOT})
+if(ENV_OPENCLROOT2)
+ set(ENV_OPENCLROOT $ENV{OPENCLROOT})
+endif(ENV_OPENCLROOT2)
+
+if(ENV_OPENCLROOT)
+ find_path(
+ OPENCL_INCLUDE_DIR
+ NAMES CL/cl.h OpenCL/cl.h
+ PATHS ${ENV_OPENCLROOT}/include
+ #NO_DEFAULT_PATH #uncomment this is you wish to surpress the use of default paths for OpenCL
+ )
+
+ if (("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
+ if(CMAKE_SIZEOF_VOID_P EQUAL 4)
+ set(OPENCL_LIB_SEARCH_PATH
+ ${OPENCL_LIB_SEARCH_PATH}
+ ${ENV_OPENCLROOT}/lib/x86)
+ else(CMAKE_SIZEOF_VOID_P EQUAL 4)
+ set(OPENCL_LIB_SEARCH_PATH
+ ${OPENCL_LIB_SEARCH_PATH}
+ ${ENV_OPENCLROOT}/lib/x86_64)
+ endif(CMAKE_SIZEOF_VOID_P EQUAL 4)
+ endif(("${CMAKE_SYSTEM_NAME}" MATCHES "Linux") OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows"))
+ find_library(
+ OPENCL_LIBRARY
+ NAMES OpenCL
+ PATHS ${OPENCL_LIB_SEARCH_PATH}
+ #NO_DEFAULT_PATH #uncomment this is you wish to surpress the use of default paths for OpenCL
+ )
+else(ENV_OPENCLROOT)
+ find_path(
+ OPENCL_INCLUDE_DIR
+ NAMES CL/cl.h OpenCL/cl.h
+ )
+
+ find_library(
+ OPENCL_LIBRARY
+ NAMES OpenCL
+ )
+endif(ENV_OPENCLROOT)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+ OPENCL
+ DEFAULT_MSG
+ OPENCL_LIBRARY OPENCL_INCLUDE_DIR
+ )
+
+if(OPENCL_FOUND)
+ set(OPENCL_LIBRARIES ${OPENCL_LIBRARY})
+else(OPENCL_FOUND)
+ set(OPENCL_LIBRARIES)
+endif(OPENCL_FOUND)
+
+mark_as_advanced(
+ OPENCL_INCLUDE_DIR
+ OPENCL_LIBRARY
+ )
+
diff --git a/cmake/FindViennaProfiler.cmake b/cmake/FindViennaProfiler.cmake
new file mode 100644
index 0000000..c7e165d
--- /dev/null
+++ b/cmake/FindViennaProfiler.cmake
@@ -0,0 +1,33 @@
+# - Find the headers and libraries required by ViennaProfiler
+#
+# Defines the following if found:
+# VIENNAPROFILER_FOUND : TRUE if found, FALSE otherwise
+# VIENNAPROFILER_INCLUDE_DIRS : Include directories for MySQL++
+# VIENNAPROFILER_LIBRARIES : The libraries to link against
+
+# first find MySQL
+find_path(MYSQL_INCLUDE_DIR mysql.h PATH_SUFFIXES mysql)
+find_library(MYSQL_LIBRARY mysqlclient)
+
+# now find MySQL++
+if(MYSQL_INCLUDE_DIR AND MYSQL_LIBRARY)
+ get_filename_component(_MYSQLPPROOT "${MYSQL_INCLUDE_DIR}" PATH)
+ find_path(MYSQLPP_INCLUDE_DIR mysql++/mysql++.h
+ HINTS "${_MYSQLPPROOT}/include")
+ find_library(MYSQLPP_LIBRARY mysqlpp
+ HINTS "${_MYSQLPPROOT}/lib")
+endif()
+
+# then find ViennaProfiler
+find_path(VIENNAPROFILER_INCLUDE_DIR viennaprofiler/profiler.hpp)
+
+mark_as_advanced(MYSQL_INCLUDE_DIR MYSQL_LIBRARY MYSQLPP_INCLUDE_DIR
+ MYSQLPP_LIBRARY VIENNAPROFILER_INCLUDE_DIR)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(ViennaProfiler VIENNAPROFILER_INCLUDE_DIR
+ MYSQLPP_INCLUDE_DIR MYSQLPP_LIBRARY MYSQL_INCLUDE_DIR MYSQL_LIBRARY)
+
+set(VIENNAPROFILER_INCLUDE_DIRS "${VIENNAPROFILER_INCLUDE_DIR}"
+ "${MYSQL_INCLUDE_DIR}" "${MYSQLPP_INCLUDE_DIR}")
+set(VIENNAPROFILER_LIBRARIES "${MYSQL_LIBRARY}" "${MYSQLPP_LIBRARY}")
diff --git a/cmake/ViennaCLCommon.cmake b/cmake/ViennaCLCommon.cmake
new file mode 100644
index 0000000..5ae0a74
--- /dev/null
+++ b/cmake/ViennaCLCommon.cmake
@@ -0,0 +1,129 @@
+
+include(CTest)
+include(CMakeDependentOption)
+
+# Installation directories
+##########################
+
+set(INSTALL_INCLUDE_DIR include CACHE PATH
+ "Installation directory for headers")
+if(WIN32 AND NOT CYGWIN)
+ set(DEF_INSTALL_CMAKE_DIR CMake)
+else()
+ set(DEF_INSTALL_CMAKE_DIR lib/cmake/viennacl)
+endif()
+set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH
+ "Installation directory for CMake files")
+
+if(NOT IS_ABSOLUTE "${INSTALL_CMAKE_DIR}")
+ set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}")
+endif()
+file(RELATIVE_PATH CONF_REL_INSTALL_PREFIX "${INSTALL_CMAKE_DIR}"
+ "${CMAKE_INSTALL_PREFIX}")
+if(NOT IS_ABSOLUTE "${INSTALL_INCLUDE_DIR}")
+ set(INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}")
+endif()
+file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
+ "${INSTALL_INCLUDE_DIR}")
+
+# User options
+##############
+
+option(BUILD_EXAMPLES "Build example programs" ON)
+
+# If you are interested in the impact of different kernel parameters on
+# performance, you may want to give ViennaProfiler a try (see
+# http://sourceforge.net/projects/viennaprofiler/) Set your connection
+# parameters in examples/parameters/common_vprof.hpp accordingly.
+cmake_dependent_option(ENABLE_VIENNAPROFILER
+ "Enable examples using ViennaProfiler" OFF BUILD_EXAMPLES OFF)
+
+
+# If you want to build the examples that use boost::numeric::ublas, enable
+# the following:
+cmake_dependent_option(ENABLE_UBLAS "Enable examples using uBLAS" OFF
+ BUILD_EXAMPLES OFF)
+
+# If you want to build the examples that use Eigen
+cmake_dependent_option(ENABLE_EIGEN "Enable examples that use Eigen" OFF
+ BUILD_EXAMPLES OFF)
+
+# If you want to build the examples that use MTL4
+cmake_dependent_option(ENABLE_MTL4 "Enable examples that use MTL4" OFF
+ BUILD_EXAMPLES OFF)
+
+cmake_dependent_option(ENABLE_PEDANTIC_FLAGS "Enable pedantic compiler flags"
+ ON CMAKE_COMPILER_IS_GNUCXX OFF)
+
+mark_as_advanced(BOOSTPATH ENABLE_VIENNAPROFILER ENABLE_UBLAS ENABLE_EIGEN
+ ENABLE_MTL4 ENABLE_PEDANTIC_FLAGS)
+
+# Find prerequisites
+####################
+
+# Boost:
+IF (BOOSTPATH)
+ SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${BOOSTPATH})
+ SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${BOOSTPATH}/lib")
+ SET(BOOST_ROOT ${BOOSTPATH})
+ENDIF (BOOSTPATH)
+
+
+if(BUILD_EXAMPLES OR BUILD_TESTING OR VIENNACL_SRC_DIST)
+ set(Boost_USE_MULTITHREADED TRUE)
+ find_package(Boost REQUIRED COMPONENTS filesystem system)
+endif()
+
+find_package(OpenCL REQUIRED)
+find_package(OpenMP)
+
+if(ENABLE_VIENNAPROFILER)
+ find_package(ViennaProfiler REQUIRED)
+endif()
+
+if(ENABLE_EIGEN)
+ # find Eigen
+ find_path(EIGEN_INCLUDE_DIR Eigen/Dense)
+ if(NOT EIGEN_INCLUDE_DIR)
+ message(SEND_ERROR "Failed to find Eigen")
+ endif()
+ mark_as_advanced(EIGEN_INCLUDE_DIR)
+endif()
+
+if(ENABLE_MTL4)
+ # MTL4 comes with a MTLConfig.cmake
+ find_package(MTL REQUIRED)
+endif()
+
+include_directories(
+ ${PROJECT_BINARY_DIR}
+ ${PROJECT_SOURCE_DIR}
+ ${OPENCL_INCLUDE_DIRS})
+
+# Set high warning level on GCC
+if(ENABLE_PEDANTIC_FLAGS)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic")
+endif()
+
+# Export
+########
+
+configure_file(cmake/FindOpenCL.cmake
+ ${PROJECT_BINARY_DIR}/FindOpenCL.cmake COPYONLY)
+
+configure_file(cmake/ViennaCLConfig.cmake.in
+ ${PROJECT_BINARY_DIR}/ViennaCLConfig.cmake @ONLY)
+
+configure_file(cmake/ViennaCLConfigVersion.cmake.in
+ ${PROJECT_BINARY_DIR}/ViennaCLConfigVersion.cmake @ONLY)
+
+export(PACKAGE ViennaCL)
+
+# Install
+#########
+
+install(FILES
+ ${PROJECT_BINARY_DIR}/FindOpenCL.cmake
+ ${PROJECT_BINARY_DIR}/ViennaCLConfig.cmake
+ ${PROJECT_BINARY_DIR}/ViennaCLConfigVersion.cmake
+ DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT dev)
diff --git a/cmake/ViennaCLConfig.cmake.in b/cmake/ViennaCLConfig.cmake.in
new file mode 100644
index 0000000..f98e28d
--- /dev/null
+++ b/cmake/ViennaCLConfig.cmake.in
@@ -0,0 +1,32 @@
+#- CMake configuration file for ViennaCL
+# Sets the following variables if ViennaCL was found:
+# VIENNACL_FOUND : TRUE if found
+# VIENNACL_INCLUDE_DIRS : Include-directories to be used
+# VIENNACL_LIBRARIES : Libraries to link against
+# Although ViennaCL is a headers-only library, it still requires an OpenCL
+# implementation, which is why it is necessary to link against a library.
+
+# Compute paths
+get_filename_component(VIENNACL_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+if(EXISTS "${VIENNACL_CMAKE_DIR}/CMakeCache.txt")
+ # in build tree
+ get_filename_component(VIENNACL_INSTALL_PREFIX "${VIENNACL_CMAKE_DIR}" PATH)
+ set(VIENNACL_INCLUDE_DIR "${_VIENNACL_PREFIX}")
+else()
+ set(VIENNACL_INSTALL_PREFIX "${VIENNACL_CMAKE_DIR}/@CONF_REL_INSTALL_PREFIX@")
+ set(VIENNACL_INCLUDE_DIR "${VIENNACL_CMAKE_DIR}/@CONF_REL_INCLUDE_DIR@")
+endif()
+
+# Find OpenCL
+set(_VIENNACL_CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
+list(INSERT CMAKE_MODULE_PATH 0 "${VIENNACL_CMAKE_DIR}")
+if(ViennaCL_FIND_REQUIRED)
+ find_package(OpenCL QUIET REQUIRED)
+else()
+ find_package(OpenCL QUIET)
+endif()
+set(CMAKE_MODULE_PATH "${_VIENNACL_CMAKE_MODULE_PATH}")
+
+# Set up variables
+set(VIENNACL_INCLUDE_DIRS ${VIENNACL_INCLUDE_DIR} ${OPENCL_INCLUDE_DIRS})
+set(VIENNACL_LIBRARIES ${OPENCL_LIBRARIES})
diff --git a/cmake/ViennaCLConfigVersion.cmake.in b/cmake/ViennaCLConfigVersion.cmake.in
new file mode 100644
index 0000000..0c5d7a7
--- /dev/null
+++ b/cmake/ViennaCLConfigVersion.cmake.in
@@ -0,0 +1,11 @@
+set(PACKAGE_VERSION "@VERSION@")
+set(PACKAGE_VERSION_COMPATIBLE FALSE)
+if(NOT "${PACKAGE_FIND_VERSION}" VERSION_LESS "${PACKAGE_VERSION}")
+ if(NOT PACKAGE_FIND_VERSION_EXACT OR
+ "${PACKAGE_FIND_VERSION}" VERSION_EQUAL "${PACKAGE_VERSION}")
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ endif()
+ if(PACKAGE_FIND_VERSION_EXACT AND PACKAGE_VERSION_COMPATIBLE)
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()
diff --git a/cmake/copymanual.cmake b/cmake/copymanual.cmake
new file mode 100644
index 0000000..c78185c
--- /dev/null
+++ b/cmake/copymanual.cmake
@@ -0,0 +1,4 @@
+
+file (COPY ${SRC} DESTINATION ${DST} FILES_MATCHING PATTERN "*.tex")
+file (COPY ${SRC} DESTINATION ${DST} FILES_MATCHING PATTERN "*.bst")
+file (COPY ${SRC} DESTINATION ${DST} FILES_MATCHING PATTERN "*.bib")
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
new file mode 100644
index 0000000..1b80cc8
--- /dev/null
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,88 @@
+if(BUILD_DOXYGEN_DOCS)
+ configure_file(Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+ add_custom_command(OUTPUT
+ ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html/index.html
+ COMMAND ${DOXYGEN_EXECUTABLE}
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ VERBATIM)
+ # Runs only once
+ add_custom_target(apidoc-all ALL
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxygen/html/index.html)
+ # For manual updates
+ add_custom_target(apidoc
+ COMMAND ${DOXYGEN_EXECUTABLE}
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ VERBATIM)
+endif()
+
+if(BUILD_MANUAL)
+ set(MANUAL_SRCS
+ manual/algorithms.tex
+ manual/benchmarks.tex
+ manual/changelogs.tex
+ manual/contributors.tex
+ manual/cover.tex
+ manual/custom-contexts.tex
+ manual/custom-kernels.tex
+ manual/design.tex
+ manual/figures/logo_px200.eps
+ manual/figures/matvec2.eps
+ manual/figures/note.eps
+ manual/figures/solver.eps
+ manual/figures/tip.eps
+ manual/figures/TU_Signet_CMYK.eps
+ manual/IEEEtran_v1.13.bst
+ manual/installation.tex
+ manual/introduction.tex
+ manual/keywords.tex
+ manual/license.tex
+ manual/multi-device.tex
+ manual/operations.tex
+ manual/other-libs.tex
+ manual/setup.tex
+ manual/tuning.tex
+ manual/types.tex
+ manual/versioning.tex
+ manual/viennacl.bib
+ manual/viennacl.tex)
+
+ set(MANUAL_OBJS
+ "${CMAKE_CURRENT_BINARY_DIR}/viennacl.pdf"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.bbl"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.blg"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.dvi"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.idx"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.log"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.out"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.ps"
+ "${CMAKE_CURRENT_BINARY_DIR}/manual/viennacl.toc")
+ foreach(f IN LISTS MANUAL_SRCS)
+ configure_file(${f} ${CMAKE_CURRENT_BINARY_DIR}/${f} COPYONLY)
+ if(f MATCHES "(.*)\\.tex$")
+ list(APPEND MANUAL_OBJS
+ "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_MATCH_1}.aux")
+ endif()
+ endforeach()
+
+ add_custom_command(OUTPUT ${MANUAL_OBJS}
+ COMMAND ${LATEX_COMPILER} viennacl.tex
+ COMMAND ${LATEX_COMPILER} viennacl.tex
+ COMMAND ${BIBTEX_COMPILER} viennacl
+ COMMAND ${LATEX_COMPILER} viennacl.tex
+ COMMAND ${BIBTEX_COMPILER} viennacl
+ COMMAND ${LATEX_COMPILER} viennacl.tex
+ COMMAND ${DVIPS_CONVERTER} -Ppdf -G0 -ta4 viennacl.dvi
+ COMMAND ${PS2PDF_CONVERTER} -dPDFSETTINGS=/prepress
+ -dCompatibilityLevel=1.3 -dMAxSubsetPct=100 -dSubsetFonts=true
+ -dEmbedAllFonts=true -sPAPERSIZE=a4 -dAutoRotatePages=/None
+ -dOptimize=true viennacl.ps ../viennacl.pdf
+ DEPENDS ${MANUAL_SRCS}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/manual
+ COMMENT "Generating manual viennacl.pdf"
+ VERBATIM)
+
+ add_custom_target(manual ALL
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/viennacl.pdf")
+endif()
diff --git a/doc/Doxyfile b/doc/Doxyfile
deleted file mode 100644
index 71e7834..0000000
--- a/doc/Doxyfile
+++ /dev/null
@@ -1,1541 +0,0 @@
-# Doxyfile 1.5.8
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = "ViennaCL - The Vienna Computing Library"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = 1.1.2
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = doxygen/
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
-# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
-# Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it parses.
-# With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this tag.
-# The format is ext=language, where ext is a file extension, and language is one of
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
-# use: inc=Fortran f=C
-
-EXTENSION_MAPPING =
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen to replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penality.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will rougly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = YES
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page. This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
-# doxygen. The layout file controls the global structure of the generated output files
-# in an output format independent way. The create the layout file that represents
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name
-# of the layout file.
-
-LAYOUT_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = ../viennacl/
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.d \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.idl \
- *.odl \
- *.cs \
- *.php \
- *.php3 \
- *.inc \
- *.m \
- *.mm \
- *.dox \
- *.py \
- *.f90 \
- *.f \
- *.vhd \
- *.vhdl
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
-GENERATE_DOCSET = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
-# are set, an additional index file will be generated that can be used as input for
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
-# HTML documentation.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE =
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
-# For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION =
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to FRAME, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature. Other possible values
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list;
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with previous
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
-# respectively.
-
-GENERATE_TREEVIEW = NONE
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE = 10
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# By default doxygen will write a font called FreeSans.ttf to the output
-# directory and reference it in all dot files that doxygen generates. This
-# font does not include all possible unicode characters however, so when you need
-# these (or just want a differently looking font) you can specify the font name
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
-# which can be done by putting it in a standard location or by setting the
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
-# containing the font.
-
-DOT_FONTNAME = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the output directory to look for the
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a
-# different font using DOT_FONTNAME you can set the path where dot
-# can find it using this tag.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Options related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
new file mode 100644
index 0000000..5cc3032
--- /dev/null
+++ b/doc/Doxyfile.in
@@ -0,0 +1,1541 @@
+# Doxyfile 1.5.8
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "ViennaCL - The Vienna Computing Library"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = 1.2.0
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = doxygen/
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C
+
+EXTENSION_MAPPING =
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page. This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = ../../viennacl/
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = *.c \
+ *.cc \
+ *.cxx \
+ *.cpp \
+ *.c++ \
+ *.d \
+ *.java \
+ *.ii \
+ *.ixx \
+ *.ipp \
+ *.i++ \
+ *.inl \
+ *.h \
+ *.hh \
+ *.hxx \
+ *.hpp \
+ *.h++ \
+ *.idl \
+ *.odl \
+ *.cs \
+ *.php \
+ *.php3 \
+ *.inc \
+ *.m \
+ *.mm \
+ *.dox \
+ *.py \
+ *.f90 \
+ *.f \
+ *.vhd \
+ *.vhdl
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code. Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature. Other possible values
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW = NONE
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Options related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/doc/doxygen/html/adapter_8hpp.html b/doc/doxygen/html/adapter_8hpp.html
deleted file mode 100644
index bedaed5..0000000
--- a/doc/doxygen/html/adapter_8hpp.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> >
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include <assert.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="adapter_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > <a href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. <a href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> > </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/adapter_8hpp_source.html b/doc/doxygen/html/adapter_8hpp_source.html
deleted file mode 100644
index 93d9281..0000000
--- a/doc/doxygen/html/adapter_8hpp_source.html
+++ /dev/null
@@ -1,380 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/adapter.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="adapter_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_ADAPTER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_ADAPTER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <assert.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>tools
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00044"></a>00044 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">bool</span> is_iterator1, <span class="keywordtype">bool</span> is_forward>
-<a name="l00045"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">00045</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, is_iterator1, is_forward></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a>;
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keyword">public</span>:
-<a name="l00050"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">00050</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">iterator1</a>;
-<a name="l00051"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">00051</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">iterator2</a>;
-<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">00053</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator</a>(std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & mat, <span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)
-<a name="l00054"></a>00054 : _mat(mat), _i(i), _j(j)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (i < 0) <span class="comment">//reverse iterator end</span>
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="comment">// iter2 = _mat[0].rend(); //reverse iterator end</span>
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060 <span class="keywordflow">else</span> <span class="comment">//_i is valid</span>
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (j < 0)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="comment">//iter2 = _mat[i].rend();</span>
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 <span class="keywordflow">else</span> <span class="comment">//_j is valid</span>
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="keywordtype">int</span> mat_size = _mat.size();
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (_i < mat_size && _j < mat_size )
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <span class="comment">//TODO: Start at entry j, not at the begin</span>
-<a name="l00072"></a>00072 iter2 = _mat[i].begin();
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_i < mat_size && _j >= mat_size )
-<a name="l00075"></a>00075 iter2 = _mat[i].end();
-<a name="l00076"></a>00076 <span class="keywordflow">else</span> <span class="comment">//i is out of range -> end iterator requested</span>
-<a name="l00077"></a>00077 iter2 = _mat[_mat.size() - 1].end(); <span class="comment">//forward iterator end</span>
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081
-<a name="l00082"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">00082</a> SCALARTYPE <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">operator*</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span>
-<a name="l00083"></a>00083 <span class="keyword"> </span>{
-<a name="l00084"></a>00084 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::const_iterator col_iterator;
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 col_iterator colit = _mat[_i].find(_j);
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (colit != _mat[_i].<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">end</a>())
-<a name="l00091"></a>00091 <span class="keywordflow">return</span> colit->second;
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> 0.0;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 <span class="keywordflow">else</span>
-<a name="l00095"></a>00095 <span class="keywordflow">return</span> iter2->second;
-<a name="l00096"></a>00096 }
-<a name="l00097"></a>00097
-<a name="l00098"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">00098</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a>(<span class="keywordtype">void</span>)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00101"></a>00101 {
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (is_forward)
-<a name="l00103"></a>00103 ++_i;
-<a name="l00104"></a>00104 <span class="keywordflow">else</span>
-<a name="l00105"></a>00105 --_i;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 <span class="keywordflow">else</span>
-<a name="l00108"></a>00108 ++iter2;
-<a name="l00109"></a>00109 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00110"></a>00110 }
-<a name="l00111"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">00111</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00112"></a>00112
-<a name="l00113"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">00113</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset)
-<a name="l00114"></a>00114 {
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (is_forward)
-<a name="l00118"></a>00118 _i += offset;
-<a name="l00119"></a>00119 <span class="keywordflow">else</span>
-<a name="l00120"></a>00120 _i -= offset;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122 <span class="keywordflow">else</span>
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=0; k<offset; ++k)
-<a name="l00125"></a>00125 ++iter2; <span class="comment">//Note: User must ensure that this is always valid...</span>
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129
-<a name="l00130"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">00130</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00131"></a>00131 <span class="keyword"> </span>{
-<a name="l00132"></a>00132 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00133"></a>00133 <span class="keywordflow">return</span> (_i == other._i);
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> (iter2 == other.iter2);
-<a name="l00135"></a>00135 }
-<a name="l00136"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">00136</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }
-<a name="l00137"></a>00137
-<a name="l00138"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">00138</a> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">index1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _i; }
-<a name="l00139"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">00139</a> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">index2</a>()<span class="keyword"> const</span>
-<a name="l00140"></a>00140 <span class="keyword"> </span>{
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00142"></a>00142 <span class="keywordflow">return</span> 0;
-<a name="l00143"></a>00143 <span class="keywordflow">else</span>
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> iter2->first;
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">00147</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">begin</a>()<span class="keyword"> const</span>
-<a name="l00148"></a>00148 <span class="keyword"> </span>{
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a>(_mat, _i, iter2->first);
-<a name="l00150"></a>00150 }
-<a name="l00151"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">00151</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">end</a>()<span class="keyword"> const</span>
-<a name="l00152"></a>00152 <span class="keyword"> </span>{
-<a name="l00153"></a>00153 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true></a>(_mat, _i, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()));
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="keyword">private</span>:
-<a name="l00157"></a>00157 std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & _mat;
-<a name="l00158"></a>00158 <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::const_iterator iter2;
-<a name="l00159"></a>00159 <span class="keywordtype">int</span> _i;
-<a name="l00160"></a>00160 <span class="keywordtype">int</span> _j;
-<a name="l00161"></a>00161 };
-<a name="l00162"></a>00162
-<a name="l00167"></a>00167 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00168"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">00168</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">const_sparse_matrix_adapter</a>
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="keyword">public</span>:
-<a name="l00171"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">00171</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, true, true></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_iterator1</a>;
-<a name="l00172"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">00172</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, false, true></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_iterator2</a>;
-<a name="l00173"></a>00173
-<a name="l00174"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">00174</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_sparse_matrix_adapted_iterator<SCALARTYPE, true, false></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_reverse_iterator1</a>;
-<a name="l00175"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">00175</a> <span class="keyword">typedef</span> SCALARTYPE value_type;
-<a name="l00176"></a>00176
-<a name="l00177"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">00177</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter</a>(std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & mat)
-<a name="l00178"></a>00178 : _mat(mat) {};
-<a name="l00179"></a>00179
-<a name="l00180"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">00180</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()); }
-<a name="l00181"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">00181</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()); } <span class="comment">//we allow only square matrices</span>
-<a name="l00182"></a>00182
-<a name="l00183"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">00183</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">begin1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_iterator1</a>(_mat, 0, 0); }
-<a name="l00184"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">00184</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">end1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_iterator1</a>(_mat, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a>(), <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()); }
-<a name="l00185"></a>00185
-<a name="l00186"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">00186</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_reverse_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">rbegin1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_reverse_iterator1</a>(_mat, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a>() - 1, 0); }
-<a name="l00187"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">00187</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_reverse_iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">rend1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_reverse_iterator1</a>(_mat, -1, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()); }
-<a name="l00188"></a>00188
-<a name="l00189"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">00189</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">begin2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_iterator2</a>(_mat, 0, 0); }
-<a name="l00190"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">00190</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html" title="A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >">const_iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">end2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_iterator2</a>(_mat, 0, <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()); }
-<a name="l00191"></a>00191
-<a name="l00192"></a><a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">00192</a> SCALARTYPE <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j)<span class="keyword"> const</span>
-<a name="l00193"></a>00193 <span class="keyword"> </span>{
-<a name="l00194"></a>00194 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::const_iterator col_iterator;
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 col_iterator colit = _mat[i].find(j);
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (colit != _mat[i].end())
-<a name="l00199"></a>00199 <span class="keywordflow">return</span> colit->second;
-<a name="l00200"></a>00200 <span class="keywordflow">return</span> 0.0;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keyword">private</span>:
-<a name="l00204"></a>00204 std::vector<std::map<unsigned int, SCALARTYPE> > <span class="keyword">const</span> & _mat;
-<a name="l00205"></a>00205 };
-<a name="l00206"></a>00206
-<a name="l00207"></a>00207
-<a name="l00215"></a>00215 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">bool</span> is_iterator1>
-<a name="l00216"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">00216</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator</a>
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, is_iterator1></a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a>;
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keyword">public</span>:
-<a name="l00221"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">00221</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator1</a>;
-<a name="l00222"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">00222</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator2</a>;
-<a name="l00223"></a>00223
-<a name="l00224"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">00224</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator</a>(std::vector<std::map<unsigned int, SCALARTYPE> > & mat, <span class="keywordtype">int</span> i, <span class="keywordtype">int</span> j)
-<a name="l00225"></a>00225 : _mat(mat), _i(i), _j(j)
-<a name="l00226"></a>00226 {
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (i < 0) <span class="comment">//reverse iterator end</span>
-<a name="l00228"></a>00228 {
-<a name="l00229"></a>00229 <span class="comment">//iter2 = _mat[0].rend(); //reverse iterator end</span>
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231 <span class="keywordflow">else</span> <span class="comment">//_i is valid</span>
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (j < 0)
-<a name="l00234"></a>00234 {
-<a name="l00235"></a>00235 <span class="comment">//iter2 = _mat[i].rend();</span>
-<a name="l00236"></a>00236 }
-<a name="l00237"></a>00237 <span class="keywordflow">else</span> <span class="comment">//_j is valid</span>
-<a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (_i < _mat.size() && _j < _mat.size() )
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 <span class="comment">//TODO: Start at entry j, not at the begin</span>
-<a name="l00242"></a>00242 iter2 = _mat[i].begin();
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_i < _mat.size() && _j >= _mat.size())
-<a name="l00245"></a>00245 iter2 = _mat[i].<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">end</a>();
-<a name="l00246"></a>00246 <span class="keywordflow">else</span> <span class="comment">//i is out of range -> end iterator requested</span>
-<a name="l00247"></a>00247 iter2 = _mat[_mat.size() - 1].end(); <span class="comment">//forward iterator end</span>
-<a name="l00248"></a>00248 }
-<a name="l00249"></a>00249 }
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251
-<a name="l00252"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">00252</a> SCALARTYPE & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">operator*</a>(<span class="keywordtype">void</span>)
-<a name="l00253"></a>00253 {
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00255"></a>00255 {
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> _mat[_i][_j];
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 <span class="keywordflow">else</span>
-<a name="l00259"></a>00259 <span class="keywordflow">return</span> iter2->second;
-<a name="l00260"></a>00260 }
-<a name="l00261"></a>00261
-<a name="l00262"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">00262</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a>(<span class="keywordtype">void</span>)
-<a name="l00263"></a>00263 {
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00265"></a>00265 ++_i;
-<a name="l00266"></a>00266 <span class="keywordflow">else</span>
-<a name="l00267"></a>00267 ++iter2;
-<a name="l00268"></a>00268 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00269"></a>00269 }
-<a name="l00270"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">00270</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00271"></a>00271
-<a name="l00272"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">00272</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset)
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00275"></a>00275 _i += offset;
-<a name="l00276"></a>00276 <span class="keywordflow">else</span>
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k=0; k<offset; ++k)
-<a name="l00279"></a>00279 ++iter2; <span class="comment">//Note: User must ensure that this is always valid...</span>
-<a name="l00280"></a>00280 }
-<a name="l00281"></a>00281 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283
-<a name="l00284"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">00284</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a>(<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00285"></a>00285 <span class="keyword"> </span>{
-<a name="l00286"></a>00286 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00287"></a>00287 <span class="keywordflow">return</span> (_i == other._i);
-<a name="l00288"></a>00288 <span class="keywordflow">return</span> (iter2 == other.iter2);
-<a name="l00289"></a>00289 }
-<a name="l00290"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">00290</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a>(<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }
-<a name="l00291"></a>00291
-<a name="l00292"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">00292</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">index1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _i; }
-<a name="l00293"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">00293</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">index2</a>()<span class="keyword"> const</span>
-<a name="l00294"></a>00294 <span class="keyword"> </span>{
-<a name="l00295"></a>00295 <span class="keywordflow">if</span> (is_iterator1)
-<a name="l00296"></a>00296 <span class="keywordflow">return</span> 0;
-<a name="l00297"></a>00297 <span class="keywordflow">else</span>
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> iter2->first;
-<a name="l00299"></a>00299 }
-<a name="l00300"></a>00300
-<a name="l00301"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">00301</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">begin</a>()<span class="keyword"> const</span>
-<a name="l00302"></a>00302 <span class="keyword"> </span>{
-<a name="l00303"></a>00303 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a>(_mat, _i, iter2->first);
-<a name="l00304"></a>00304 }
-<a name="l00305"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">00305</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">end</a>()<span class="keyword"> const</span>
-<a name="l00306"></a>00306 <span class="keyword"> </span>{
-<a name="l00307"></a>00307 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1></a>(_mat, _i, <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(_mat.size()));
-<a name="l00308"></a>00308 }
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310 <span class="keyword">private</span>:
-<a name="l00311"></a>00311 std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;
-<a name="l00312"></a>00312 <span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::iterator iter2;
-<a name="l00313"></a>00313 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _i;
-<a name="l00314"></a>00314 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _j;
-<a name="l00315"></a>00315 };
-<a name="l00316"></a>00316
-<a name="l00317"></a>00317
-<a name="l00318"></a>00318
-<a name="l00323"></a>00323 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00324"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">00324</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">sparse_matrix_adapter</a> : <span class="keyword">public</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">const_sparse_matrix_adapter</a><SCALARTYPE>
-<a name="l00325"></a>00325 {
-<a name="l00326"></a>00326 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">const_sparse_matrix_adapter<SCALARTYPE></a> <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">BaseType</a>;
-<a name="l00327"></a>00327 <span class="keyword">public</span>:
-<a name="l00328"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">00328</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, true></a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator1</a>;
-<a name="l00329"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">00329</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">sparse_matrix_adapted_iterator<SCALARTYPE, false></a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator2</a>;
-<a name="l00330"></a>00330
-<a name="l00331"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">00331</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter</a>(std::vector<std::map<unsigned int, SCALARTYPE> > & mat)
-<a name="l00332"></a>00332 : <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">BaseType</a>(mat), _mat(mat) { };
-<a name="l00333"></a>00333
-<a name="l00334"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">00334</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">begin1</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">iterator1</a>(_mat, 0, 0); }
-<a name="l00335"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">00335</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator1</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">end1</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">iterator1</a>(_mat, _mat.size(), _mat.size()); }
-<a name="l00336"></a>00336
-<a name="l00337"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">00337</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">begin2</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">iterator2</a>(_mat, 0, 0); }
-<a name="l00338"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">00338</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html" title="A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int...">iterator2</a> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">end2</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">iterator2</a>(_mat, _mat.size(), _mat.size()); }
-<a name="l00339"></a>00339
-<a name="l00340"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">00340</a> SCALARTYPE & <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j) { <span class="keywordflow">return</span> _mat[i][j]; }
-<a name="l00341"></a>00341
-<a name="l00342"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">00342</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00343"></a>00343 {
-<a name="l00344"></a>00344 <span class="keywordflow">if</span> (i>0)
-<a name="l00345"></a>00345 _mat.resize(i);
-<a name="l00346"></a>00346 <span class="keywordflow">if</span> (!preserve)
-<a name="l00347"></a>00347 <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();
-<a name="l00348"></a>00348 }
-<a name="l00349"></a>00349
-<a name="l00350"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">00350</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>()
-<a name="l00351"></a>00351 {
-<a name="l00352"></a>00352 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<_mat.size(); ++i)
-<a name="l00353"></a>00353 _mat[i].<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>();
-<a name="l00354"></a>00354 }
-<a name="l00355"></a>00355
-<a name="l00356"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">00356</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">size1</a>() { <span class="keywordflow">return</span> _mat.size(); }
-<a name="l00357"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">00357</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mat.size(); } <span class="comment">//Note: Due to name hiding it is not sufficient to have it in the base class</span>
-<a name="l00358"></a>00358
-<a name="l00359"></a>00359 <span class="comment">//assume a square matrix</span>
-<a name="l00360"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">00360</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">size2</a>() { <span class="keywordflow">return</span> _mat.size(); }
-<a name="l00361"></a><a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">00361</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mat.size(); } <span class="comment">//Note: Due to name hiding it is not sufficient to have it in the base class</span>
-<a name="l00362"></a>00362
-<a name="l00363"></a>00363 <span class="keyword">private</span>:
-<a name="l00364"></a>00364 std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;
-<a name="l00365"></a>00365 };
-<a name="l00366"></a>00366
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 }
-<a name="l00369"></a>00369 }
-<a name="l00370"></a>00370 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/annotated.html b/doc/doxygen/html/annotated.html
deleted file mode 100644
index 92e57f2..0000000
--- a/doc/doxygen/html/annotated.html
+++ /dev/null
@@ -1,286 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Structures</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>Data Structures</h1> </div>
-</div>
-<div class="contents">
-Here are the data structures with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a></td><td class="indexvalue">A backend that provides contexts for ViennaCL objects (vector, matrix, etc.) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></td><td class="indexvalue">A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></td><td class="indexvalue">A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a></td><td class="indexvalue">A guard that checks whether the floating point type of GPU types is either float or double </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></td><td class="indexvalue">A tag indicating iteration along increasing columns index of a matrix </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1column__major.html">column_major</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></td><td class="indexvalue">A class representing a command queue </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A sparse square matrix in compressed sparse rows format </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a></td><td class="indexvalue">Removes the const qualifier from a type </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a></td><td class="indexvalue">A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a></td><td class="indexvalue">Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!! </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a></td><td class="indexvalue">Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T> </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></td><td class="indexvalue">A class representing a compute device (e.g. a GPU) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a></td><td class="indexvalue">Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a></td><td class="indexvalue">Simple enable-if variant that uses the SFINAE pattern </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a></td><td class="indexvalue">A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a></td><td class="indexvalue">An error reporting class. Template argument is used to avoid problems with external linkage </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a></td><td class="indexvalue">Helper meta class that returns the first letter of a particular type (float or double) </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></td><td class="indexvalue">A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a></td><td class="indexvalue">Handle class the effectively represents a smart pointer for OpenCL handles </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a></td><td class="indexvalue">Helper for OpenCL reference counting used by class handle </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a></td><td class="indexvalue">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td><td class="indexvalue">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></td><td class="indexvalue">A tag for incomplete LU factorization with threshold (ILUT) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a></td><td class="indexvalue">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></td><td class="indexvalue">A tag for a jacobi preconditioner </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></td><td class="indexvalue">Represents an OpenCL kernel within ViennaCL </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></td><td class="indexvalue">A class representing local (shared) OpenCL memory. Typically used as kernel argument </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></td><td class="indexvalue">A tag class representing a lower triangular matrix </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a></td><td class="indexvalue">A dense matrix class </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td><td class="indexvalue">Supply suitable increment functions for the iterators: </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a></td><td class="indexvalue">Deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a></td><td class="indexvalue">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a></td><td class="indexvalue">Deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2 </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></td><td class="indexvalue">A tag class representing the use of no preconditioner </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></td><td class="indexvalue">A XML parameter database using PugiXML. Allows to add tests for different devices and the like </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></td><td class="indexvalue">A tag indicating iteration along increasing row index of a matrix </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1row__major.html">row_major</a></td><td class="indexvalue">A tag for row-major storage of a dense matrix </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td><td class="indexvalue">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></td><td class="indexvalue">A tag for a row preconditioner </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a></td><td class="indexvalue">This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a></td><td class="indexvalue">A proxy for scalar expressions (e.g. from inner vector products) </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a></td><td class="indexvalue">A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a></td><td class="indexvalue">Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a></td><td class="indexvalue">Helper meta-class that converts a type to a string </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></td><td class="indexvalue">A tag class representing a lower triangular matrix with unit diagonal </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></td><td class="indexvalue">A tag class representing an upper triangular matrix with unit diagonal </td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></td><td class="indexvalue">A tag class representing an upper triangular matrix </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a></td><td class="indexvalue">An expression template class that represents a binary operation that yields a vector </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a></td><td class="indexvalue">Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a></td><td class="indexvalue">A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!! </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a></td><td class="indexvalue">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands </td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></td><td class="indexvalue"></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/backend_8hpp.html b/doc/doxygen/html/backend_8hpp.html
deleted file mode 100644
index d044838..0000000
--- a/doc/doxygen/html/backend_8hpp.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of the OpenCL backend, where all contexts are stored in.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="context_8hpp_source.html">viennacl/ocl/context.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="enqueue_8hpp_source.html">viennacl/ocl/enqueue.hpp</a>"</code><br/>
-
-<p><a href="backend_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A backend that provides contexts for ViennaCL objects (vector, matrix, etc.). <a href="classviennacl_1_1ocl_1_1backend.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the current context. <a href="#a0c2a174533a0aca403ff7c4aa802edcf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">switch_context</a> (long i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the current context. <a href="#acc1a7460a9ff237b7c0306c32c3d34c6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">setup_context</a> (long i, std::vector< cl_device_id > const &devices)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting devices for a context. <a href="#add1725d48cfd159ce187e287369d1cdb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a643e413cdc3e3d682c8ae0c6f0a83e0a">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context. <a href="#a643e413cdc3e3d682c8ae0c6f0a83e0a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae5ebc6a53d1c2ac134b5d955c61ad9e">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context. <a href="#aae5ebc6a53d1c2ac134b5d955c61ad9e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a4ee09e7150e7158ac0e2fbfe21740138">setup_context</a> (long i, cl_context c, cl_device_id d, cl_command_queue q)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context. <a href="#a4ee09e7150e7158ac0e2fbfe21740138"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">set_context_device_type</a> (long i, cl_device_type dev_type)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context. <a href="#a11349d9bbd1691595c6ac23d03b294fd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0bda50e7a1d1ce32d0eb999bcf40ff65">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to GPUs. <a href="#a0bda50e7a1d1ce32d0eb999bcf40ff65"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae6d53d33250af634366a082eb389e1e">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to CPUs. <a href="#aae6d53d33250af634366a082eb389e1e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aa55ca72f1d88e6366d9d7555d5fd3e3c">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to the default OpenCL device type. <a href="#aa55ca72f1d88e6366d9d7555d5fd3e3c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a8eb7b871db32c1425afe547854885e83">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to accelerators. <a href="#a8eb7b871db32c1425afe547854885e83"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">get_queue</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the default queue for the currently active device in the active context. <a href="#ac7871671987d322a8766aea79b1cd17a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a053c7351f8606ff49117e251683a77b4">get_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> d, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context. <a href="#a053c7351f8606ff49117e251683a77b4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">get_queue</a> (cl_device_id dev_id, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context. <a href="#aaa732391e632ec192953cc997fa269df"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">get_kernel</a> (std::string const &prog_name, std::string const &kernel_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the kernel for a particular program from the current active context. <a href="#a61a73653d92f1eb2ef9c649ec253e29f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">switch_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the active device in the current context. <a href="#ac8bcead4c47a372eef33d7d660fa0072"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">current_device</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the active device in the current context. <a href="#a31b4bfa886efdae7ada1c0c5f2591ed5"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of the OpenCL backend, where all contexts are stored in. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/backend_8hpp_source.html b/doc/doxygen/html/backend_8hpp_source.html
deleted file mode 100644
index 836525f..0000000
--- a/doc/doxygen/html/backend_8hpp_source.html
+++ /dev/null
@@ -1,274 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/backend.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="backend_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_BACKEND_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_BACKEND_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="context_8hpp.html">viennacl/ocl/context.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="enqueue_8hpp.html" title="Enqueues kernels into command queues.">viennacl/ocl/enqueue.hpp</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a><a class="code" href="namespaceviennacl_1_1ocl.html">00028</a> <span class="keyword">namespace </span>ocl
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030
-<a name="l00032"></a>00032 <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy = false> <span class="comment">//never use parameter other than default (introduced for linkage issues only)</span>
-<a name="l00033"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html">00033</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1backend.html" title="A backend that provides contexts for ViennaCL objects (vector, matrix, etc.).">backend</a>
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">public</span>:
-<a name="l00040"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">00040</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b" title="Switches the current context to the context identified by i.">switch_context</a>(<span class="keywordtype">long</span> i)
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 current_context_id_ = i;
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044
-<a name="l00046"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">00046</a> <span class="keyword">static</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d" title="Returns the current active context.">current_context</a>()
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keywordflow">if</span> (!initialized_[current_context_id_])
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="comment">//std::cout << "Initializing context no. " << current_context_id_ << std::endl;</span>
-<a name="l00051"></a>00051 contexts_[current_context_id_].init();
-<a name="l00052"></a>00052 <span class="comment">//create one queue per device:</span>
-<a name="l00053"></a>00053 std::vector<viennacl::ocl::device> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = contexts_[current_context_id_].devices();
-<a name="l00054"></a>00054 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00055"></a>00055 contexts_[current_context_id_].add_queue(devices[j]);
-<a name="l00056"></a>00056 initialized_[current_context_id_] = <span class="keyword">true</span>;
-<a name="l00057"></a>00057 <span class="comment">/*</span>
-<a name="l00058"></a>00058 <span class="comment"> std::cout << "Context no. " << current_context_id_ << " initialized with " << devices.size() << " devices" << std::endl;</span>
-<a name="l00059"></a>00059 <span class="comment"> std::cout << "Device id: " << devices[0].id() << std::endl;</span>
-<a name="l00060"></a>00060 <span class="comment"> std::cout << "Current device id: " << contexts_[current_context_id_].current_device().id() << std::endl; */</span>
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062 <span class="keywordflow">return</span> contexts_[current_context_id_];
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00066"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">00066</a> <span class="keyword">static</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377" title="Returns the current queue for the active device in the active context.">get_queue</a>()
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d" title="Returns the current active context.">current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>();
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00076"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">00076</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00077"></a>00077 std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>)
-<a name="l00078"></a>00078 {
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (initialized_[i])
-<a name="l00080"></a>00080 std::cerr << <span class="stringliteral">"ViennaCL: Warning in init_context(): Providing a list of devices has no effect, because context for ViennaCL is already created!"</span> << std::endl;
-<a name="l00081"></a>00081 <span class="keywordflow">else</span>
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="comment">//set devices for context:</span>
-<a name="l00084"></a>00084 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00085"></a>00085 contexts_[i].add_device(devices[j]);
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00096"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#ac0a9ddc7f74148e9f5fe8bc5872e4da7">00096</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00097"></a>00097 cl_context c,
-<a name="l00098"></a>00098 std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>,
-<a name="l00099"></a>00099 std::map< cl_device_id, std::vector< cl_command_queue > > <span class="keyword">const</span> & queues)
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 assert(devices.size() == queues.size() && <span class="stringliteral">"ViennaCL expects one queue per device!"</span>);
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="keywordflow">if</span> (initialized_[i])
-<a name="l00104"></a>00104 std::cerr << <span class="stringliteral">"ViennaCL: Warning in init_context(): Providing a list of devices has no effect, because context for ViennaCL is already created!"</span> << std::endl;
-<a name="l00105"></a>00105 <span class="keywordflow">else</span>
-<a name="l00106"></a>00106 {
-<a name="l00107"></a>00107 <span class="comment">//set devices for context:</span>
-<a name="l00108"></a>00108 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00109"></a>00109 contexts_[i].add_device(devices[j]);
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="comment">//init context:</span>
-<a name="l00112"></a>00112 contexts_[i].init(c);
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <span class="comment">//add queues:</span>
-<a name="l00115"></a>00115 <span class="keyword">typedef</span> <span class="keyword">typename</span> std::map< cl_device_id, std::vector< cl_command_queue > >::const_iterator queue_iterator;
-<a name="l00116"></a>00116 <span class="keywordflow">for</span> (queue_iterator qit = queues.begin();
-<a name="l00117"></a>00117 qit != queues.end();
-<a name="l00118"></a>00118 ++qit)
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 std::vector<cl_command_queue> <span class="keyword">const</span> & queues_for_device = qit->second;
-<a name="l00121"></a>00121 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j=0; j<queues_for_device.size(); ++j)
-<a name="l00122"></a>00122 contexts_[i].add_queue(qit->first, queues_for_device[j]);
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 initialized_[i] = <span class="keyword">true</span>;
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<a name="l00136"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a2d0605c63ed50df91d198700387e1372">00136</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(<span class="keywordtype">long</span> i, cl_context c, std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>, std::vector<cl_command_queue> <span class="keyword">const</span> & queue)
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 assert(devices.size() == queue.size() && <span class="stringliteral">"ViennaCL expects one queue per device!"</span>);
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="comment">//wrap queue vector into map</span>
-<a name="l00141"></a>00141 std::map< cl_device_id, std::vector<cl_command_queue> > queues_map;
-<a name="l00142"></a>00142 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j<devices.size(); ++j)
-<a name="l00143"></a>00143 queues_map[devices[j]].push_back(queue[j]);
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 <a class="code" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734" title="Sets a number of devices for the context.">setup_context</a>(i, c, devices, queues_map);
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147
-<a name="l00149"></a><a class="code" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">00149</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff" title="Sets the context device type.">set_context_device_type</a>(<span class="keywordtype">long</span> i, cl_device_type t)
-<a name="l00150"></a>00150 {
-<a name="l00151"></a>00151 contexts_[i].default_device_type(t);
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="keyword">private</span>:
-<a name="l00155"></a>00155 <span class="keyword">static</span> <span class="keywordtype">long</span> current_context_id_;
-<a name="l00156"></a>00156 <span class="keyword">static</span> std::map<long, bool> initialized_;
-<a name="l00157"></a>00157 <span class="keyword">static</span> std::map<long, viennacl::ocl::context> contexts_;
-<a name="l00158"></a>00158 };
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy>
-<a name="l00161"></a>00161 <span class="keywordtype">long</span> backend<dummy>::current_context_id_ = 0;
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy>
-<a name="l00164"></a>00164 std::map<long, bool> backend<dummy>::initialized_;
-<a name="l00165"></a>00165
-<a name="l00166"></a>00166 <span class="keyword">template</span> <<span class="keywordtype">bool</span> dummy>
-<a name="l00167"></a>00167 std::map<long, viennacl::ocl::context> backend<dummy>::contexts_;
-<a name="l00168"></a>00168
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>()
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::backend<>::current_context</a>();
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00177"></a><a class="code" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">00177</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6" title="Convenience function for switching the current context.">switch_context</a>(<span class="keywordtype">long</span> i)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <a class="code" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6" title="Convenience function for switching the current context.">viennacl::ocl::backend<>::switch_context</a>(i);
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182
-<a name="l00184"></a><a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">00184</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00185"></a>00185 std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>)
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187 <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, devices);
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189
-<a name="l00191"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a643e413cdc3e3d682c8ae0c6f0a83e0a">00191</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i,
-<a name="l00192"></a>00192 cl_context c,
-<a name="l00193"></a>00193 std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>,
-<a name="l00194"></a>00194 std::map< cl_device_id, std::vector<cl_command_queue> > <span class="keyword">const</span> & queues)
-<a name="l00195"></a>00195 {
-<a name="l00196"></a>00196 <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, c, devices, queues);
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198
-<a name="l00200"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aae5ebc6a53d1c2ac134b5d955c61ad9e">00200</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i, cl_context c, std::vector<cl_device_id> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>, std::vector<cl_command_queue> <span class="keyword">const</span> & queues)
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, c, devices, queues);
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00206"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a4ee09e7150e7158ac0e2fbfe21740138">00206</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">setup_context</a>(<span class="keywordtype">long</span> i, cl_context c, cl_device_id d, cl_command_queue q)
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 std::vector<cl_device_id> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a>(1);
-<a name="l00209"></a>00209 std::vector<cl_command_queue> queues(1);
-<a name="l00210"></a>00210 devices[0] = d;
-<a name="l00211"></a>00211 queues[0] = q;
-<a name="l00212"></a>00212 <a class="code" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb" title="Convenience function for setting devices for a context.">viennacl::ocl::backend<>::setup_context</a>(i, c, devices, queues);
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214
-<a name="l00216"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">00216</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, cl_device_type dev_type)
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">viennacl::ocl::backend<>::set_context_device_type</a>(i, dev_type);
-<a name="l00219"></a>00219 }
-<a name="l00220"></a>00220
-<a name="l00222"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a0bda50e7a1d1ce32d0eb999bcf40ff65">00222</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a>)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_GPU);
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226
-<a name="l00228"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aae6d53d33250af634366a082eb389e1e">00228</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a>)
-<a name="l00229"></a>00229 {
-<a name="l00230"></a>00230 <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_CPU);
-<a name="l00231"></a>00231 }
-<a name="l00232"></a>00232
-<a name="l00234"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aa55ca72f1d88e6366d9d7555d5fd3e3c">00234</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a>)
-<a name="l00235"></a>00235 {
-<a name="l00236"></a>00236 <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_DEFAULT);
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238
-<a name="l00240"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a8eb7b871db32c1425afe547854885e83">00240</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(<span class="keywordtype">long</span> i, <a class="code" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a>)
-<a name="l00241"></a>00241 {
-<a name="l00242"></a>00242 <a class="code" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd" title="Convenience function for setting the default device type for a context.">set_context_device_type</a>(i, CL_DEVICE_TYPE_ACCELERATOR);
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00246"></a>00246
-<a name="l00247"></a><a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">00247</a> <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>()
-<a name="l00248"></a>00248 {
-<a name="l00249"></a>00249 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>();
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251
-<a name="l00253"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a053c7351f8606ff49117e251683a77b4">00253</a> <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> d, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queue_id = 0)
-<a name="l00254"></a>00254 {
-<a name="l00255"></a>00255 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>(d.<a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06" title="Returns the OpenCL device id.">id</a>(), queue_id);
-<a name="l00256"></a>00256 }
-<a name="l00257"></a>00257
-<a name="l00259"></a><a class="code" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">00259</a> <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>(cl_device_id dev_id, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> queue_id = 0)
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>(dev_id, queue_id);
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264
-<a name="l00266"></a><a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">00266</a> <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">get_kernel</a>(std::string <span class="keyword">const</span> & prog_name, std::string <span class="keyword">const</span> & kernel_name)
-<a name="l00267"></a>00267 {
-<a name="l00268"></a>00268 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name).<a class="code" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb" title="Returns the kernel with the provided name.">get_kernel</a>(kernel_name);
-<a name="l00269"></a>00269 }
-<a name="l00270"></a>00270
-<a name="l00272"></a><a class="code" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">00272</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072" title="Convenience function for switching the active device in the current context.">switch_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> & d)
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e" title="Switches the current device to the i-th device in this context.">switch_device</a>(d);
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276
-<a name="l00278"></a>00278 <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">current_device</a>()
-<a name="l00279"></a>00279 {
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4" title="Returns the current device.">current_device</a>();
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283 } <span class="comment">//ocl</span>
-<a name="l00284"></a>00284 } <span class="comment">//viennacl</span>
-<a name="l00285"></a>00285 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/bc_s.png b/doc/doxygen/html/bc_s.png
deleted file mode 100644
index e401862..0000000
Binary files a/doc/doxygen/html/bc_s.png and /dev/null differ
diff --git a/doc/doxygen/html/bicgstab_8hpp.html b/doc/doxygen/html/bicgstab_8hpp.html
deleted file mode 100644
index 27b3732..0000000
--- a/doc/doxygen/html/bicgstab_8hpp.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>The stabilized bi-conjugate gradient method is implemented here.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="prod_8hpp_source.html">viennacl/linalg/prod.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="inner__prod_8hpp_source.html">viennacl/linalg/inner_prod.hpp</a>"</code><br/>
-
-<p><a href="bicgstab_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. <a href="classviennacl_1_1linalg_1_1bicgstab__tag.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">solve</a> (const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the stabilized Bi-conjugate gradient solver. <a href="#ab50f87d195eb82ddbe5ce910e914bc55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7eb0bd2b912aa3c5d83aa4801e7e89fd">solve</a> (const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adbcb7f6a46ca520d01f6ce53f83f5069">solve</a> (const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned stabilized Bi-conjugate gradient solver. <a href="#adbcb7f6a46ca520d01f6ce53f83f5069"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The stabilized bi-conjugate gradient method is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/bicgstab_8hpp_source.html b/doc/doxygen/html/bicgstab_8hpp_source.html
deleted file mode 100644
index 0370bdc..0000000
--- a/doc/doxygen/html/bicgstab_8hpp_source.html
+++ /dev/null
@@ -1,256 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/bicgstab.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="bicgstab_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_BICGSTAB_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_BICGSTAB_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="prod_8hpp.html" title="Generic interface for matrix-vector and matrix-matrix products. See viennacl/linalg/vector_operations...">viennacl/linalg/prod.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="inner__prod_8hpp.html" title="Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.">viennacl/linalg/inner_prod.hpp</a>"</span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>linalg
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033
-<a name="l00036"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">00036</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a>
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">public</span>:
-<a name="l00044"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">00044</a> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5" title="The constructor.">bicgstab_tag</a>(<span class="keywordtype">double</span> tol = 1e-8, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a> = 300) : _tol(tol), _iterations(<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>) {};
-<a name="l00045"></a>00045
-<a name="l00047"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">00047</a> <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tol; }
-<a name="l00049"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">00049</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _iterations; }
-<a name="l00050"></a>00050
-<a name="l00052"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">00052</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> iters_taken_; }
-<a name="l00053"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">00053</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ iters_taken_ = i; }
-<a name="l00054"></a>00054
-<a name="l00056"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">00056</a> <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> last_error_; }
-<a name="l00058"></a><a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">00058</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322" title="Sets the estimated relative error at the end of the solver run.">error</a>(<span class="keywordtype">double</span> e)<span class="keyword"> const </span>{ last_error_ = e; }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="keyword">private</span>:
-<a name="l00061"></a>00061 <span class="keywordtype">double</span> _tol;
-<a name="l00062"></a>00062 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _iterations;
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="comment">//return values from solver</span>
-<a name="l00065"></a>00065 <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iters_taken_;
-<a name="l00066"></a>00066 <span class="keyword">mutable</span> <span class="keywordtype">double</span> last_error_;
-<a name="l00067"></a>00067 };
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069
-<a name="l00079"></a>00079 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00080"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">00080</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a> ScalarType;
-<a name="l00083"></a>00083 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a> CPU_ScalarType;
-<a name="l00084"></a>00084 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00085"></a>00085 VectorType result(problem_size);
-<a name="l00086"></a>00086 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(result);
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 VectorType residual = rhs;
-<a name="l00089"></a>00089 VectorType p = rhs;
-<a name="l00090"></a>00090 VectorType r0star = rhs;
-<a name="l00091"></a>00091 VectorType tmp0(problem_size);
-<a name="l00092"></a>00092 VectorType tmp1(problem_size);
-<a name="l00093"></a>00093 VectorType s(problem_size);
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 CPU_ScalarType ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(rhs,r0star);
-<a name="l00096"></a>00096 CPU_ScalarType norm_rhs_host = ip_rr0star;
-<a name="l00097"></a>00097 CPU_ScalarType beta;
-<a name="l00098"></a>00098 CPU_ScalarType alpha;
-<a name="l00099"></a>00099 CPU_ScalarType omega;
-<a name="l00100"></a>00100 ScalarType inner_prod_temp; <span class="comment">//temporary variable for inner product computation</span>
-<a name="l00101"></a>00101 ScalarType new_ip_rr0star = 0;
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00106"></a>00106 tmp0 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00107"></a>00107 <span class="comment">//alpha = ip_rr0star / viennacl::linalg::inner_prod(tmp0, r0star);</span>
-<a name="l00108"></a>00108 inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp0, r0star);
-<a name="l00109"></a>00109 alpha = ip_rr0star / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(inner_prod_temp);
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="comment">//s = residual - alpha*tmp0;</span>
-<a name="l00112"></a>00112 s = residual;
-<a name="l00113"></a>00113 s -= alpha*tmp0;
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="comment">//std::cout << "alpha: " << alpha << std::endl;</span>
-<a name="l00116"></a>00116 <span class="comment">/*std::cout << "s[0]: " << s[0] << std::endl;</span>
-<a name="l00117"></a>00117 <span class="comment"> std::cout << "s[end]: " << s[s.size()-1] << std::endl;</span>
-<a name="l00118"></a>00118 <span class="comment"> for (long k=0; k<10; ++k)</span>
-<a name="l00119"></a>00119 <span class="comment"> std::cout << s[k] << std::endl;</span>
-<a name="l00120"></a>00120 <span class="comment"> exit(0);*/</span>
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 tmp1 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, s);
-<a name="l00124"></a>00124 <span class="comment">//omega = viennacl::linalg::inner_prod(tmp1, s) / viennacl::linalg::inner_prod(tmp1, tmp1);</span>
-<a name="l00125"></a>00125 inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, s);
-<a name="l00126"></a>00126 omega = inner_prod_temp;
-<a name="l00127"></a>00127 inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, tmp1);
-<a name="l00128"></a>00128 omega /= inner_prod_temp;
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 <span class="comment">//result += alpha * p + omega * s;</span>
-<a name="l00131"></a>00131 result += alpha * p;
-<a name="l00132"></a>00132 result += omega * s;
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="comment">//residual = s - omega * tmp1;</span>
-<a name="l00135"></a>00135 residual = s;
-<a name="l00136"></a>00136 residual -= omega*tmp1;
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 new_ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,r0star);
-<a name="l00139"></a>00139 <span class="keywordflow">if</span> (std::fabs( <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host) < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() * tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())
-<a name="l00140"></a>00140 <span class="keywordflow">break</span>;
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="comment">//beta = new_ip_rr0star / ip_rr0star * alpha/omega;</span>
-<a name="l00143"></a>00143 CPU_ScalarType cpu_temp = new_ip_rr0star; <span class="comment">//read from device only once</span>
-<a name="l00144"></a>00144 beta = cpu_temp / ip_rr0star * alpha/omega;
-<a name="l00145"></a>00145 ip_rr0star = cpu_temp;
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="comment">//p = residual + beta * (p - omega*tmp0);</span>
-<a name="l00148"></a>00148 p -= omega * tmp0;
-<a name="l00149"></a>00149 p *= beta;
-<a name="l00150"></a>00150 p += residual;
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 <span class="comment">//store last error estimate:</span>
-<a name="l00154"></a>00154 tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::sqrt(std::fabs(<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host)));
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="keywordflow">return</span> result;
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00160"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7eb0bd2b912aa3c5d83aa4801e7e89fd">00160</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a> <span class="keyword">const</span> & tag, <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">viennacl::linalg::no_precond</a>)
-<a name="l00161"></a>00161 {
-<a name="l00162"></a>00162 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(matrix, rhs, tag);
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00175"></a>00175 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType, <span class="keyword">typename</span> PreconditionerType>
-<a name="l00176"></a><a class="code" href="namespaceviennacl_1_1linalg.html#adbcb7f6a46ca520d01f6ce53f83f5069">00176</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html" title="A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for d...">bicgstab_tag</a> <span class="keyword">const</span> & tag, PreconditionerType <span class="keyword">const</span> & precond)
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a> ScalarType;
-<a name="l00179"></a>00179 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a> CPU_ScalarType;
-<a name="l00180"></a>00180 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00181"></a>00181 VectorType result(problem_size);
-<a name="l00182"></a>00182 result.clear();
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 VectorType residual = rhs;
-<a name="l00185"></a>00185 precond.apply(residual);
-<a name="l00186"></a>00186 VectorType r0star = residual; <span class="comment">//can be chosen arbitrarily in fact</span>
-<a name="l00187"></a>00187 VectorType tmp0(problem_size);
-<a name="l00188"></a>00188 VectorType tmp1(problem_size);
-<a name="l00189"></a>00189 VectorType s(problem_size);
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 VectorType p = residual;
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 CPU_ScalarType ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,r0star);
-<a name="l00194"></a>00194 CPU_ScalarType norm_rhs_host = ip_rr0star;
-<a name="l00195"></a>00195 CPU_ScalarType beta;
-<a name="l00196"></a>00196 CPU_ScalarType alpha;
-<a name="l00197"></a>00197 CPU_ScalarType omega;
-<a name="l00198"></a>00198 ScalarType new_ip_rr0star = 0;
-<a name="l00199"></a>00199 ScalarType inner_prod_temp; <span class="comment">//temporary variable for inner product</span>
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00204"></a>00204 tmp0 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00205"></a>00205 precond.apply(tmp0);
-<a name="l00206"></a>00206 <span class="comment">//alpha = ip_rr0star / viennacl::linalg::inner_prod(tmp0, r0star);</span>
-<a name="l00207"></a>00207 inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp0, r0star);
-<a name="l00208"></a>00208 alpha = ip_rr0star / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(inner_prod_temp);
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="comment">//s = residual - alpha*tmp0;</span>
-<a name="l00211"></a>00211 s = residual;
-<a name="l00212"></a>00212 s -= alpha*tmp0;
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 tmp1 = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, s);
-<a name="l00215"></a>00215 precond.apply(tmp1);
-<a name="l00216"></a>00216 <span class="comment">//omega = viennacl::linalg::inner_prod(tmp1, s) / viennacl::linalg::inner_prod(tmp1, tmp1);</span>
-<a name="l00217"></a>00217 inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, s);
-<a name="l00218"></a>00218 omega = inner_prod_temp;
-<a name="l00219"></a>00219 inner_prod_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp1, tmp1);
-<a name="l00220"></a>00220 omega /= inner_prod_temp;
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222 <span class="comment">//result += alpha * p + omega * s;</span>
-<a name="l00223"></a>00223 result += alpha * p;
-<a name="l00224"></a>00224 result += omega * s;
-<a name="l00225"></a>00225 <span class="comment">//residual = s - omega * tmp1;</span>
-<a name="l00226"></a>00226 residual = s;
-<a name="l00227"></a>00227 residual -= omega*tmp1;
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 new_ip_rr0star = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,r0star);
-<a name="l00230"></a>00230 <span class="keywordflow">if</span> (std::fabs(<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host) < tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() * tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() )
-<a name="l00231"></a>00231 <span class="keywordflow">break</span>;
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 <span class="comment">//beta = new_ip_rr0star / ip_rr0star * alpha/omega;</span>
-<a name="l00234"></a>00234 CPU_ScalarType cpu_temp = new_ip_rr0star; <span class="comment">//read from device only once</span>
-<a name="l00235"></a>00235 beta = cpu_temp / ip_rr0star * alpha/omega;
-<a name="l00236"></a>00236 ip_rr0star = cpu_temp;
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 <span class="comment">//p = residual + beta * (p - omega*tmp0);</span>
-<a name="l00239"></a>00239 p -= omega * tmp0;
-<a name="l00240"></a>00240 <span class="comment">//p = residual + beta * p;</span>
-<a name="l00241"></a>00241 p *= beta;
-<a name="l00242"></a>00242 p += residual;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="comment">//store last error estimate:</span>
-<a name="l00246"></a>00246 tag.<a class="code" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::sqrt(std::fabs(<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, residual) / norm_rhs_host)));
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="keywordflow">return</span> result;
-<a name="l00249"></a>00249 }
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/cg_8hpp.html b/doc/doxygen/html/cg_8hpp.html
deleted file mode 100644
index c13cda2..0000000
--- a/doc/doxygen/html/cg_8hpp.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>The conjugate gradient method is implemented here.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="ilu_8hpp_source.html">viennacl/linalg/ilu.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="prod_8hpp_source.html">viennacl/linalg/prod.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="inner__prod_8hpp_source.html">viennacl/linalg/inner_prod.hpp</a>"</code><br/>
-
-<p><a href="cg_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. <a href="classviennacl_1_1linalg_1_1cg__tag.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6bc45bf37430c67d6a32ed8e10e77e94">solve</a> (const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the conjugate gradient solver without preconditioner. <a href="#a6bc45bf37430c67d6a32ed8e10e77e94"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a560520300c350a1d8afa44d5c036b48b">solve</a> (const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adefd0a97aaeaa8eb75097847443c6ee1">solve</a> (const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned conjugate gradient solver. <a href="#adefd0a97aaeaa8eb75097847443c6ee1"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The conjugate gradient method is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/cg_8hpp_source.html b/doc/doxygen/html/cg_8hpp_source.html
deleted file mode 100644
index cd57e6e..0000000
--- a/doc/doxygen/html/cg_8hpp_source.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/cg.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="cg_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_CG_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_CG_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <map></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <cmath></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="ilu_8hpp.html" title="Implementations of incomplete factorization preconditioners.">viennacl/linalg/ilu.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="prod_8hpp.html" title="Generic interface for matrix-vector and matrix-matrix products. See viennacl/linalg/vector_operations...">viennacl/linalg/prod.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="inner__prod_8hpp.html" title="Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.">viennacl/linalg/inner_prod.hpp</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00038"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html">00038</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a>
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">public</span>:
-<a name="l00046"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">00046</a> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe" title="The constructor.">cg_tag</a>(<span class="keywordtype">double</span> tol = 1e-8, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a> = 300) : _tol(tol), _iterations(<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>) {};
-<a name="l00047"></a>00047
-<a name="l00049"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">00049</a> <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tol; }
-<a name="l00051"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">00051</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _iterations; }
-<a name="l00052"></a>00052
-<a name="l00054"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">00054</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> iters_taken_; }
-<a name="l00055"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">00055</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ iters_taken_ = i; }
-<a name="l00056"></a>00056
-<a name="l00058"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">00058</a> <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> last_error_; }
-<a name="l00060"></a><a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322">00060</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322" title="Sets the estimated relative error at the end of the solver run.">error</a>(<span class="keywordtype">double</span> e)<span class="keyword"> const </span>{ last_error_ = e; }
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">private</span>:
-<a name="l00064"></a>00064 <span class="keywordtype">double</span> _tol;
-<a name="l00065"></a>00065 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _iterations;
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <span class="comment">//return values from solver</span>
-<a name="l00068"></a>00068 <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iters_taken_;
-<a name="l00069"></a>00069 <span class="keyword">mutable</span> <span class="keywordtype">double</span> last_error_;
-<a name="l00070"></a>00070 };
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072
-<a name="l00082"></a>00082 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00083"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6bc45bf37430c67d6a32ed8e10e77e94">00083</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="comment">//typedef typename VectorType::value_type ScalarType;</span>
-<a name="l00086"></a>00086 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a> ScalarType;
-<a name="l00087"></a>00087 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a> CPU_ScalarType;
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00090"></a>00090 VectorType result(problem_size);
-<a name="l00091"></a>00091 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(result);
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 VectorType residual = rhs;
-<a name="l00094"></a>00094 VectorType p = rhs;
-<a name="l00095"></a>00095 VectorType tmp(problem_size);
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 ScalarType tmp_in_p;
-<a name="l00098"></a>00098 ScalarType residual_norm_squared;
-<a name="l00099"></a>00099 CPU_ScalarType ip_rr = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(rhs,rhs);
-<a name="l00100"></a>00100 CPU_ScalarType alpha;
-<a name="l00101"></a>00101 CPU_ScalarType new_ip_rr = 0;
-<a name="l00102"></a>00102 CPU_ScalarType beta;
-<a name="l00103"></a>00103 CPU_ScalarType norm_rhs_squared = ip_rr;
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="comment">//std::cout << "Starting CG solver... " << std::endl;</span>
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00110"></a>00110 tmp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="comment">//alpha = ip_rr / viennacl::linalg::inner_prod(tmp, p);</span>
-<a name="l00113"></a>00113 tmp_in_p = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp, p);
-<a name="l00114"></a>00114 alpha = ip_rr / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(tmp_in_p);
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 result += alpha * p;
-<a name="l00117"></a>00117 residual -= alpha * tmp;
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 residual_norm_squared = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual,residual);
-<a name="l00120"></a>00120 new_ip_rr = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(residual_norm_squared);
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (new_ip_rr / norm_rhs_squared < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() * tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())<span class="comment">//squared norms involved here</span>
-<a name="l00122"></a>00122 <span class="keywordflow">break</span>;
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 beta = new_ip_rr / ip_rr;
-<a name="l00125"></a>00125 ip_rr = new_ip_rr;
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="comment">//p = residual + beta*p;</span>
-<a name="l00128"></a>00128 p *= beta;
-<a name="l00129"></a>00129 p += residual;
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="comment">//store last error estimate:</span>
-<a name="l00133"></a>00133 tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(sqrt(new_ip_rr / norm_rhs_squared));
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="keywordflow">return</span> result;
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00139"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a560520300c350a1d8afa44d5c036b48b">00139</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a> <span class="keyword">const</span> & tag, <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">viennacl::linalg::no_precond</a>)
-<a name="l00140"></a>00140 {
-<a name="l00141"></a>00141 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(matrix, rhs, tag);
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00154"></a>00154 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType, <span class="keyword">typename</span> PreconditionerType>
-<a name="l00155"></a><a class="code" href="namespaceviennacl_1_1linalg.html#adefd0a97aaeaa8eb75097847443c6ee1">00155</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html" title="A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the solve()...">cg_tag</a> <span class="keyword">const</span> & tag, PreconditionerType <span class="keyword">const</span> & precond)
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 <span class="keyword">typedef</span> <span class="keyword">typename</span> VectorType::value_type ScalarType;
-<a name="l00158"></a>00158 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a> CPU_ScalarType;
-<a name="l00159"></a>00159 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 VectorType result(problem_size);
-<a name="l00162"></a>00162 result.clear();
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 VectorType residual = rhs;
-<a name="l00165"></a>00165 VectorType tmp(problem_size);
-<a name="l00166"></a>00166 VectorType z = rhs;
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 precond.apply(z);
-<a name="l00169"></a>00169 VectorType p = z;
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 ScalarType tmp_in_p;
-<a name="l00172"></a>00172 ScalarType residual_in_z;
-<a name="l00173"></a>00173 CPU_ScalarType ip_rr = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, z);
-<a name="l00174"></a>00174 CPU_ScalarType alpha;
-<a name="l00175"></a>00175 CPU_ScalarType new_ip_rr = 0;
-<a name="l00176"></a>00176 CPU_ScalarType beta;
-<a name="l00177"></a>00177 CPU_ScalarType norm_rhs_squared = ip_rr;
-<a name="l00178"></a>00178 CPU_ScalarType new_ipp_rr_over_norm_rhs;
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>(); ++i)
-<a name="l00181"></a>00181 {
-<a name="l00182"></a>00182 tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(i+1);
-<a name="l00183"></a>00183 tmp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, p);
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 tmp_in_p = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(tmp, p);
-<a name="l00186"></a>00186 alpha = ip_rr / <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(tmp_in_p);
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 result += alpha * p;
-<a name="l00189"></a>00189 residual -= alpha * tmp;
-<a name="l00190"></a>00190 z = residual;
-<a name="l00191"></a>00191 precond.apply(z);
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 residual_in_z = <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(residual, z);
-<a name="l00194"></a>00194 new_ip_rr = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(residual_in_z);
-<a name="l00195"></a>00195 new_ipp_rr_over_norm_rhs = new_ip_rr / norm_rhs_squared;
-<a name="l00196"></a>00196 <span class="keywordflow">if</span> (std::fabs(new_ipp_rr_over_norm_rhs) < tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() * tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>()) <span class="comment">//squared norms involved here</span>
-<a name="l00197"></a>00197 <span class="keywordflow">break</span>;
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 beta = new_ip_rr / ip_rr;
-<a name="l00200"></a>00200 ip_rr = new_ip_rr;
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="comment">//p = z + beta*p;</span>
-<a name="l00203"></a>00203 p *= beta;
-<a name="l00204"></a>00204 p += z;
-<a name="l00205"></a>00205 }
-<a name="l00206"></a>00206
-<a name="l00207"></a>00207 <span class="comment">//store last error estimate:</span>
-<a name="l00208"></a>00208 tag.<a class="code" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(sqrt(std::fabs(new_ip_rr / norm_rhs_squared)));
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> result;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214 }
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classes.html b/doc/doxygen/html/classes.html
deleted file mode 100644
index 63f8533..0000000
--- a/doc/doxygen/html/classes.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Alphabetical List</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>Data Structure Index</h1> </div>
-</div>
-<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_V">V</a></div>
-<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> A </div></td></tr></table>
-</td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> F </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1scalar.html">scalar</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> B </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> G </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1is__stl.html">is_stl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> H </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1column__major.html">column_major</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a name="letter_J"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> J </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a name="letter_K"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> K </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> L </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a> (<a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> M </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1matrix.html">matrix</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> U </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> V </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> N </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a> (<a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">viennacl::tools::result_of</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="classviennacl_1_1vector.html">vector</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> P </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a> (<a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a>) </td><td><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="structviennacl_1_1row__major.html">row_major</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> E </div></td></tr></table>
-</td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if</a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> (<a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> (<a class="el" href="namespaceviennacl.html">viennacl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table>
-</td><td><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a> (<a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a>) </td></tr><tr><td><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td><td><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a> (<a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a>) </td></tr></table><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_V">V</a></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1compressed__matrix.html b/doc/doxygen/html/classviennacl_1_1compressed__matrix.html
deleted file mode 100644
index 7b5edcb..0000000
--- a/doc/doxygen/html/classviennacl_1_1compressed__matrix.html
+++ /dev/null
@@ -1,465 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>compressed_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::compressed_matrix" -->
-<p>A sparse square matrix in compressed sparse rows format.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="compressed__matrix_8hpp_source.html">compressed_matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">compressed_matrix</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default construction of a compressed matrix. No memory is allocated. <a href="#a837bbcb68157a2e753f0ac1632a6ce00"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a3ba96c743010a59262c8a0d8a18bc87f">compressed_matrix</a> (unsigned int rows, unsigned int cols, unsigned int nonzeros=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction of a compressed matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated. <a href="#a3ba96c743010a59262c8a0d8a18bc87f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a9d9605472ab231ce31949eb09938d72d">compressed_matrix</a> (cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, unsigned int rows, unsigned int cols, unsigned int nonzeros)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">set</a> (unsigned int *row_jumper, unsigned int *col_buffer, SCALARTYPE *elements, unsigned int cols, unsigned int nonzeros)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the row, column and value arrays of the compressed matrix. <a href="#a30594c885d58e3372b44a4e358715483"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">reserve</a> (unsigned int new_nonzeros)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. <a href="#a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">resize</a> (unsigned int new_size1, unsigned int new_size2, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resize the matrix. <a href="#a72c98b8dba1f78661da5d71f20550d25"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of rows. <a href="#a10aa70c5b59457061b66e118e8fc05e4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of columns. <a href="#ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">nnz</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of nonzero entries. <a href="#a972c39774748817eb7b1de422b2eeff6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">handle1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the row index array. <a href="#a3fe10834aae81725adf7b0614222a3b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">handle2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the column index array. <a href="#ab51dbf980dbd2eeb1f3e7d45d8f5b898"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the matrix entry array. <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::compressed_matrix< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A sparse square matrix in compressed sparse rows format. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The floating point type (either float or double, checked at compile time) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size for the entries in each row is given by (<a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory. </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::compressed_matrix::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a837bbcb68157a2e753f0ac1632a6ce00"></a><!-- doxytag: member="viennacl::compressed_matrix::compressed_matrix" ref="a837bbcb68157a2e753f0ac1632a6ce00" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Default construction of a compressed matrix. No memory is allocated. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ba96c743010a59262c8a0d8a18bc87f"></a><!-- doxytag: member="viennacl::compressed_matrix::compressed_matrix" ref="a3ba96c743010a59262c8a0d8a18bc87f" args="(unsigned int rows, unsigned int cols, unsigned int nonzeros=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>cols</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>nonzeros</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Construction of a compressed matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>Number of rows </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cols</em> </td><td>Number of columns </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>nonzeros</em> </td><td>Optional number of nonzeros for memory preallocation </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9d9605472ab231ce31949eb09938d72d"></a><!-- doxytag: member="viennacl::compressed_matrix::compressed_matrix" ref="a9d9605472ab231ce31949eb09938d72d" args="(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, unsigned int rows, unsigned int cols, unsigned int nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a> </td>
- <td>(</td>
- <td class="paramtype">cl_mem </td>
- <td class="paramname"> <em>mem_row_buffer</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_mem </td>
- <td class="paramname"> <em>mem_col_buffer</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_mem </td>
- <td class="paramname"> <em>mem_elements</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>cols</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>nonzeros</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::compressed_matrix::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the matrix entry array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3fe10834aae81725adf7b0614222a3b3"></a><!-- doxytag: member="viennacl::compressed_matrix::handle1" ref="a3fe10834aae81725adf7b0614222a3b3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the row index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab51dbf980dbd2eeb1f3e7d45d8f5b898"></a><!-- doxytag: member="viennacl::compressed_matrix::handle2" ref="ab51dbf980dbd2eeb1f3e7d45d8f5b898" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the column index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a972c39774748817eb7b1de422b2eeff6"></a><!-- doxytag: member="viennacl::compressed_matrix::nnz" ref="a972c39774748817eb7b1de422b2eeff6" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int& nnz </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of nonzero entries. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><!-- doxytag: member="viennacl::compressed_matrix::reserve" ref="a4de4afd37fea94c8d1bb2df3eacdcdf1" args="(unsigned int new_nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void reserve </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>new_nonzeros</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. </p>
-
-</div>
-</div>
-<a class="anchor" id="a72c98b8dba1f78661da5d71f20550d25"></a><!-- doxytag: member="viennacl::compressed_matrix::resize" ref="a72c98b8dba1f78661da5d71f20550d25" args="(unsigned int new_size1, unsigned int new_size2, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void resize </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>new_size1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>new_size2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Resize the matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>new_size1</em> </td><td>New number of rows </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>new_size2</em> </td><td>New number of columns </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, the old values are preserved. At present, old values are always discarded. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a30594c885d58e3372b44a4e358715483"></a><!-- doxytag: member="viennacl::compressed_matrix::set" ref="a30594c885d58e3372b44a4e358715483" args="(unsigned int *row_jumper, unsigned int *col_buffer, SCALARTYPE *elements, unsigned int cols, unsigned int nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void set </td>
- <td>(</td>
- <td class="paramtype">unsigned int * </td>
- <td class="paramname"> <em>row_jumper</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int * </td>
- <td class="paramname"> <em>col_buffer</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE * </td>
- <td class="paramname"> <em>elements</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>cols</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>nonzeros</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the row, column and value arrays of the compressed matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>row_jumper</em> </td><td>Pointer to an array holding the indices of the first element of each row (starting with zero). E.g. row_jumper[10] returns the index of the first entry of the 11th row. The array length is 'cols + 1' </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>col_buffer</em> </td><td>Pointer to an array holding the column index of each entry. The array length is 'nonzeros' </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>elements</em> </td><td>Pointer to an array holding the entries of the sparse matrix. The array length is 'elements' </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cols</em> </td><td>Number of columns (and rows) of the sparse matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>nonzeros</em> </td><td>Number of nonzeros </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a10aa70c5b59457061b66e118e8fc05e4"></a><!-- doxytag: member="viennacl::compressed_matrix::size1" ref="a10aa70c5b59457061b66e118e8fc05e4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int& size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of rows. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><!-- doxytag: member="viennacl::compressed_matrix::size2" ref="ac1b69377d2b4e37ccb5fab0fa125bc9a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int& size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of columns. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="compressed__matrix_8hpp_source.html">compressed_matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.html b/doc/doxygen/html/classviennacl_1_1const__vector__iterator.html
deleted file mode 100644
index d568eba..0000000
--- a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.html
+++ /dev/null
@@ -1,404 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: const_vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pro-attribs">Protected Attributes</a> </div>
- <div class="headertitle">
-<h1>const_vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::const_vector_iterator" -->
-<p>A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!!
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for const_vector_iterator< SCALARTYPE, ALIGNMENT >:</div>
-<div class="dyncontent">
- <div class="center">
- <img src="classviennacl_1_1const__vector__iterator.png" usemap="#const_vector_iterator< SCALARTYPE, ALIGNMENT >_map" alt=""/>
- <map id="const_vector_iterator< SCALARTYPE, ALIGNMENT >_map" name="const_vector_iterator< SCALARTYPE, ALIGNMENT >_map">
-<area href="classviennacl_1_1vector__iterator.html" alt="vector_iterator< SCALARTYPE, ALIGNMENT >" shape="rect" coords="0,56,319,80"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">value_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef long </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">const_vector_iterator</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b">const_vector_iterator</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &vec, cl_uint index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#aa8e2e53d1a9740dc9a7e5dc30b03734b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a9cf058c9dc4e611bc1a4c0690fe02492">const_vector_iterator</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const &elements, cl_uint index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">value_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">operator*</a> (void) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a39f7c37604fd9845ff487b36b6f88602">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">operator-</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">operator+</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> diff) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem ><br class="typebreak"/>
- const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a> () const </td></tr>
-<tr><td colspan="2"><h2><a name="pro-attribs"></a>
-Protected Attributes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">elements_</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The index of the entry the iterator is currently pointing to. <a href="#a620028b02247d371f9637f6a648a13cc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::const_vector_iterator< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!! </p>
-<p>Every dereference operation initiates a transfer from the GPU to the CPU. The overhead of such a transfer is around 50us, so 20.000 dereferences take one second. This is four orders of magnitude slower than similar dereferences on the CPU. However, increments and comparisons of iterators is as fast as for CPU types. If you need a fast iterator, copy the whole vector to the CPU first and iterate over the CPU object, e.g. std::vector<float> temp; copy(gpu_vector, temp); for (std::vector<float>::const_iterator iter = temp.begin(); iter != temp.end(); ++iter) { //do something } Note that you may obtain inconsistent data if entries of gpu_vector are manipulated elsewhere in the meanwhile.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The underlying floating point type (either float or double) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>Alignment of the underlying vector, </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a> </dd></dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a8ad60a9ff2530781950dbfd682353e64"></a><!-- doxytag: member="viennacl::const_vector_iterator::difference_type" ref="a8ad60a9ff2530781950dbfd682353e64" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef long <a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae59e37ebbe3a193fa2dd307e94d99518"></a><!-- doxytag: member="viennacl::const_vector_iterator::value_type" ref="ae59e37ebbe3a193fa2dd307e94d99518" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ac6a7762dba62eaf3d6379fc12481b559"></a><!-- doxytag: member="viennacl::const_vector_iterator::const_vector_iterator" ref="ac6a7762dba62eaf3d6379fc12481b559" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa8e2e53d1a9740dc9a7e5dc30b03734b"></a><!-- doxytag: member="viennacl::const_vector_iterator::const_vector_iterator" ref="aa8e2e53d1a9740dc9a7e5dc30b03734b" args="(vector< SCALARTYPE, ALIGNMENT > const &vec, cl_uint index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_uint </td>
- <td class="paramname"> <em>index</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector over which to iterate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>The starting index of the iterator </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9cf058c9dc4e611bc1a4c0690fe02492"></a><!-- doxytag: member="viennacl::const_vector_iterator::const_vector_iterator" ref="a9cf058c9dc4e611bc1a4c0690fe02492" args="(viennacl::ocl::handle< cl_mem > const &elements, cl_uint index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const & </td>
- <td class="paramname"> <em>elements</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_uint </td>
- <td class="paramname"> <em>index</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a625da5e66b023a7ed067040a21ec834d"></a><!-- doxytag: member="viennacl::const_vector_iterator::handle" ref="a625da5e66b023a7ed067040a21ec834d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> const& handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5a79972f223067007dcfd4350cbad30f"></a><!-- doxytag: member="viennacl::const_vector_iterator::index" ref="a5a79972f223067007dcfd4350cbad30f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int index </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0c704f6470bc4c7392b964dd83a1d97b"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator!=" ref="a0c704f6470bc4c7392b964dd83a1d97b" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator!= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a832e184e247b97ecb752bf291d814dff"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator*" ref="a832e184e247b97ecb752bf291d814dff" args="(void) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">value_type</a> operator* </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a63fe5e79738641bc4c5fd1f07740e3c7"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator+" ref="a63fe5e79738641bc4c5fd1f07740e3c7" args="(difference_type diff) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> operator+ </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> </td>
- <td class="paramname"> <em>diff</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0b50df67a5cd6493e8839fd8990500a7"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator++" ref="a0b50df67a5cd6493e8839fd8990500a7" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> operator++ </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a39f7c37604fd9845ff487b36b6f88602"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator++" ref="a39f7c37604fd9845ff487b36b6f88602" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> operator++ </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aec7de6121b5440524976b3baf978fb5c"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator-" ref="aec7de6121b5440524976b3baf978fb5c" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> operator- </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae01970b831b1c1dc3a9f22f7a4e19cf6"></a><!-- doxytag: member="viennacl::const_vector_iterator::operator==" ref="ae01970b831b1c1dc3a9f22f7a4e19cf6" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator== </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="a620028b02247d371f9637f6a648a13cc"></a><!-- doxytag: member="viennacl::const_vector_iterator::elements_" ref="a620028b02247d371f9637f6a648a13cc" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> <a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">elements_</a><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The index of the entry the iterator is currently pointing to. </p>
-
-</div>
-</div>
-<a class="anchor" id="a961e8f62e2b57b3021c417a2c61dfb82"></a><!-- doxytag: member="viennacl::const_vector_iterator::index_" ref="a961e8f62e2b57b3021c417a2c61dfb82" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int <a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a><code> [protected]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.png b/doc/doxygen/html/classviennacl_1_1const__vector__iterator.png
deleted file mode 100644
index f9bd4a5..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1const__vector__iterator.png and /dev/null differ
diff --git a/doc/doxygen/html/classviennacl_1_1coordinate__matrix.html b/doc/doxygen/html/classviennacl_1_1coordinate__matrix.html
deleted file mode 100644
index 37d6891..0000000
--- a/doc/doxygen/html/classviennacl_1_1coordinate__matrix.html
+++ /dev/null
@@ -1,409 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> </div>
- <div class="headertitle">
-<h1>coordinate_matrix< SCALARTYPE, ALIGNMENT > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::coordinate_matrix" -->
-<p>A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="coordinate__matrix_8hpp_source.html">coordinate_matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a">coordinate_matrix</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default construction of a coordinate matrix. No memory is allocated. <a href="#aee188ff216de32fdea80ffcaf47c515a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">coordinate_matrix</a> (unsigned int rows, unsigned int cols, unsigned int nonzeros=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Construction of a coordinate matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated. <a href="#ab6d3264162d39010d13f24c98eaeb528"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">reserve</a> (unsigned int new_nonzeros)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. <a href="#a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">resize</a> (unsigned int new_size1, unsigned int new_size2, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resize the matrix. <a href="#a72c98b8dba1f78661da5d71f20550d25"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of rows. <a href="#a890ed2f6c982169c737bd4f68b2a5db7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of columns. <a href="#aacffdea3e049b0080b6fa4ac4c2fd881"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">nnz</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of nonzero entries. <a href="#afd2735dee9ed4b7afb979c1f7a7e2c0b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">internal_nnz</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of internal nonzero entries. <a href="#a7293d194294dda1d5fee2e11c0344d2f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">handle12</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the (row, column) index array. <a href="#a3816ff54e1dc90d0c1650bf44580dac8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the matrix entry array. <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">handle3</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle to the group start index array. <a href="#a3a2d3ce95e8cd635a285c7584c8691a0"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::coordinate_matrix< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry. </p>
-<p>The present implementation of <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> suffers from poor runtime efficiency. Users are adviced to use <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> in the meanwhile.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The floating point type (either float or double, checked at compile time) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size for the arrays, given by (<a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::coordinate_matrix::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aee188ff216de32fdea80ffcaf47c515a"></a><!-- doxytag: member="viennacl::coordinate_matrix::coordinate_matrix" ref="aee188ff216de32fdea80ffcaf47c515a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Default construction of a coordinate matrix. No memory is allocated. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab6d3264162d39010d13f24c98eaeb528"></a><!-- doxytag: member="viennacl::coordinate_matrix::coordinate_matrix" ref="ab6d3264162d39010d13f24c98eaeb528" args="(unsigned int rows, unsigned int cols, unsigned int nonzeros=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a> </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>cols</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>nonzeros</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Construction of a coordinate matrix with the supplied number of rows and columns. If the number of nonzeros is positive, memory is allocated. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>Number of rows </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cols</em> </td><td>Number of columns </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>nonzeros</em> </td><td>Optional number of nonzeros for memory preallocation </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::coordinate_matrix::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the matrix entry array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3816ff54e1dc90d0c1650bf44580dac8"></a><!-- doxytag: member="viennacl::coordinate_matrix::handle12" ref="a3816ff54e1dc90d0c1650bf44580dac8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle12 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the (row, column) index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3a2d3ce95e8cd635a285c7584c8691a0"></a><!-- doxytag: member="viennacl::coordinate_matrix::handle3" ref="a3a2d3ce95e8cd635a285c7584c8691a0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle3 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle to the group start index array. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7293d194294dda1d5fee2e11c0344d2f"></a><!-- doxytag: member="viennacl::coordinate_matrix::internal_nnz" ref="a7293d194294dda1d5fee2e11c0344d2f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int internal_nnz </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of internal nonzero entries. </p>
-
-</div>
-</div>
-<a class="anchor" id="afd2735dee9ed4b7afb979c1f7a7e2c0b"></a><!-- doxytag: member="viennacl::coordinate_matrix::nnz" ref="afd2735dee9ed4b7afb979c1f7a7e2c0b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int nnz </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of nonzero entries. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4de4afd37fea94c8d1bb2df3eacdcdf1"></a><!-- doxytag: member="viennacl::coordinate_matrix::reserve" ref="a4de4afd37fea94c8d1bb2df3eacdcdf1" args="(unsigned int new_nonzeros)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void reserve </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>new_nonzeros</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. </p>
-
-</div>
-</div>
-<a class="anchor" id="a72c98b8dba1f78661da5d71f20550d25"></a><!-- doxytag: member="viennacl::coordinate_matrix::resize" ref="a72c98b8dba1f78661da5d71f20550d25" args="(unsigned int new_size1, unsigned int new_size2, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void resize </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>new_size1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>new_size2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Resize the matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>new_size1</em> </td><td>New number of rows </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>new_size2</em> </td><td>New number of columns </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, the old values are preserved. At present, old values are always discarded. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a890ed2f6c982169c737bd4f68b2a5db7"></a><!-- doxytag: member="viennacl::coordinate_matrix::size1" ref="a890ed2f6c982169c737bd4f68b2a5db7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of rows. </p>
-
-</div>
-</div>
-<a class="anchor" id="aacffdea3e049b0080b6fa4ac4c2fd881"></a><!-- doxytag: member="viennacl::coordinate_matrix::size2" ref="aacffdea3e049b0080b6fa4ac4c2fd881" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of columns. </p>
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="ac897302c28562b6e0fc56d2802102960"></a><!-- doxytag: member="viennacl::coordinate_matrix::copy" ref="ac897302c28562b6e0fc56d2802102960" args="(const CPU_MATRIX &cpu_matrix, coordinate_matrix< SCALARTYPE2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void copy </td>
- <td>(</td>
- <td class="paramtype">const CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE2, ALIGNMENT2 > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [friend]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="coordinate__matrix_8hpp_source.html">coordinate_matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1entry__proxy.html b/doc/doxygen/html/classviennacl_1_1entry__proxy.html
deleted file mode 100644
index 02a5995..0000000
--- a/doc/doxygen/html/classviennacl_1_1entry__proxy.html
+++ /dev/null
@@ -1,329 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: entry_proxy< SCALARTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>entry_proxy< SCALARTYPE > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::entry_proxy" -->
-<p>A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="entry__proxy_8hpp_source.html">entry_proxy.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">entry_proxy</a> (unsigned int mem_offset, <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const &mem_handle)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler. <a href="#a969b706bdf3d3ab2ae15cb24085b0b81"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">operator+=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a CPU floating point value. <a href="#ae111ad2b2148ff97982f897adb9f03a1"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">operator-=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a CPU floating point value. <a href="#a2255068fb4a338c350ceb6c5a933097b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">operator*=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace multiplication with a CPU floating point value. <a href="#ac1c79eb6f521714145802e095d2063a5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">operator/=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace division by a CPU floating point value. <a href="#a0eb65cfaa5a879f33d9c389ad9595b0c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852">operator=</a> (SCALARTYPE value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment of a CPU floating point value. <a href="#aac69195b98b89d2dbb4cb339e3d00852"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">operator=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment of a GPU floating point value. Avoids unnecessary GPU->CPU->GPU transfers. <a href="#a6d7884311926bdd52601f636e82d3562"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">operator=</a> (<a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment of another GPU value. <a href="#a1fe82cd71bef5d14642c9ab3d205fd94"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">operator SCALARTYPE</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Conversion to a CPU floating point value. <a href="#accf19b79da67d458fb38880c7a055f8d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">index</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the index of the represented element. <a href="#a5a79972f223067007dcfd4350cbad30f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem ><br class="typebreak"/>
- const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>. <a href="#a625da5e66b023a7ed067040a21ec834d"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE><br/>
- class viennacl::entry_proxy< SCALARTYPE ></h3>
-
-<p>A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library. </p>
-<p>This proxy provides access to a single entry of a vector. If the element is assigned to a GPU object, no unnecessary transfers to the CPU and back to GPU are initiated.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>Either float or double </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a969b706bdf3d3ab2ae15cb24085b0b81"></a><!-- doxytag: member="viennacl::entry_proxy::entry_proxy" ref="a969b706bdf3d3ab2ae15cb24085b0b81" args="(unsigned int mem_offset, viennacl::ocl::handle< cl_mem > const &mem_handle)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a> </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>mem_offset</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const & </td>
- <td class="paramname"> <em>mem_handle</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mem_offset</em> </td><td>The memory offset in multiples of sizeof(SCALARTYPE) relative to the memory pointed to by the handle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mem_handle</em> </td><td>A <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a> for the memory buffer on the GPU. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a625da5e66b023a7ed067040a21ec834d"></a><!-- doxytag: member="viennacl::entry_proxy::handle" ref="a625da5e66b023a7ed067040a21ec834d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> const& handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5a79972f223067007dcfd4350cbad30f"></a><!-- doxytag: member="viennacl::entry_proxy::index" ref="a5a79972f223067007dcfd4350cbad30f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int index </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the index of the represented element. </p>
-
-</div>
-</div>
-<a class="anchor" id="accf19b79da67d458fb38880c7a055f8d"></a><!-- doxytag: member="viennacl::entry_proxy::operator SCALARTYPE" ref="accf19b79da67d458fb38880c7a055f8d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">operator SCALARTYPE </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Conversion to a CPU floating point value. </p>
-<p>This conversion allows to write something like double test = vector(4); However, one has to keep in mind that CPU<->GPU transfers are very slow compared to CPU<->CPU operations. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac1c79eb6f521714145802e095d2063a5"></a><!-- doxytag: member="viennacl::entry_proxy::operator*=" ref="ac1c79eb6f521714145802e095d2063a5" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator*= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace multiplication with a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae111ad2b2148ff97982f897adb9f03a1"></a><!-- doxytag: member="viennacl::entry_proxy::operator+=" ref="ae111ad2b2148ff97982f897adb9f03a1" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator+= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2255068fb4a338c350ceb6c5a933097b"></a><!-- doxytag: member="viennacl::entry_proxy::operator-=" ref="a2255068fb4a338c350ceb6c5a933097b" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator-= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0eb65cfaa5a879f33d9c389ad9595b0c"></a><!-- doxytag: member="viennacl::entry_proxy::operator/=" ref="a0eb65cfaa5a879f33d9c389ad9595b0c" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator/= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace division by a CPU floating point value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6d7884311926bdd52601f636e82d3562"></a><!-- doxytag: member="viennacl::entry_proxy::operator=" ref="a6d7884311926bdd52601f636e82d3562" args="(scalar< SCALARTYPE > const &value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment of a GPU floating point value. Avoids unnecessary GPU->CPU->GPU transfers. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1fe82cd71bef5d14642c9ab3d205fd94"></a><!-- doxytag: member="viennacl::entry_proxy::operator=" ref="a1fe82cd71bef5d14642c9ab3d205fd94" args="(entry_proxy const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment of another GPU value. </p>
-
-</div>
-</div>
-<a class="anchor" id="aac69195b98b89d2dbb4cb339e3d00852"></a><!-- doxytag: member="viennacl::entry_proxy::operator=" ref="aac69195b98b89d2dbb4cb339e3d00852" args="(SCALARTYPE value)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>& operator= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment of a CPU floating point value. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="entry__proxy_8hpp_source.html">entry_proxy.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1bicgstab__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1bicgstab__tag.html
deleted file mode 100644
index f67d8eb..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1bicgstab__tag.html
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: bicgstab_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>bicgstab_tag Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::bicgstab_tag" -->
-<p>A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="bicgstab_8hpp_source.html">bicgstab.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">bicgstab_tag</a> (double tol=1e-8, unsigned int max_iterations=300)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor. <a href="#a5bc5a824cc4327c98fba2137408743e5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">tolerance</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the relative tolerance. <a href="#a2e99612a88de21eaeb07e55be78a28a3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">max_iterations</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of iterations. <a href="#ab0a4e05130e2f14ba0374b9570ae9525"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">iters</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of solver iterations: <a href="#a26002e6fe73ece7e16b125d9f4e97be9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a> (unsigned int i) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">error</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the estimated relative error at the end of the solver run. <a href="#ae75852c9d9bf937552ee5a1bafea818f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">error</a> (double e) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the estimated relative error at the end of the solver run. <a href="#a086bf00d9923c3f80f62de3f8491a322"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a5bc5a824cc4327c98fba2137408743e5"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::bicgstab_tag" ref="a5bc5a824cc4327c98fba2137408743e5" args="(double tol=1e-8, unsigned int max_iterations=300)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>tol</em> = <code>1e-8</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>max_iterations</em> = <code>300</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>tol</em> </td><td>Relative tolerance for the residual (solver quits if ||r|| < tol * ||r_initial||) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>max_iterations</em> </td><td>The maximum number of iterations </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae75852c9d9bf937552ee5a1bafea818f"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::error" ref="ae75852c9d9bf937552ee5a1bafea818f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a086bf00d9923c3f80f62de3f8491a322"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::error" ref="a086bf00d9923c3f80f62de3f8491a322" args="(double e) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void error </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>e</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0643bc87331b97f3a90e71ec54ff205b"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::iters" ref="a0643bc87331b97f3a90e71ec54ff205b" args="(unsigned int i) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void iters </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a26002e6fe73ece7e16b125d9f4e97be9"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::iters" ref="a26002e6fe73ece7e16b125d9f4e97be9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int iters </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Return the number of solver iterations: </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0a4e05130e2f14ba0374b9570ae9525"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::max_iterations" ref="ab0a4e05130e2f14ba0374b9570ae9525" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int max_iterations </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of iterations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e99612a88de21eaeb07e55be78a28a3"></a><!-- doxytag: member="viennacl::linalg::bicgstab_tag::tolerance" ref="a2e99612a88de21eaeb07e55be78a28a3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double tolerance </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the relative tolerance. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="bicgstab_8hpp_source.html">bicgstab.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1cg__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1cg__tag.html
deleted file mode 100644
index 2bd4b7a..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1cg__tag.html
+++ /dev/null
@@ -1,226 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: cg_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>cg_tag Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::cg_tag" -->
-<p>A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="cg_8hpp_source.html">cg.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">cg_tag</a> (double tol=1e-8, unsigned int max_iterations=300)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor. <a href="#a987be47faf08698e2775045a23de5abe"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">tolerance</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the relative tolerance. <a href="#a2e99612a88de21eaeb07e55be78a28a3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">max_iterations</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of iterations. <a href="#ab0a4e05130e2f14ba0374b9570ae9525"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">iters</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of solver iterations: <a href="#a26002e6fe73ece7e16b125d9f4e97be9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a> (unsigned int i) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">error</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the estimated relative error at the end of the solver run. <a href="#ae75852c9d9bf937552ee5a1bafea818f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322">error</a> (double e) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the estimated relative error at the end of the solver run. <a href="#a086bf00d9923c3f80f62de3f8491a322"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a987be47faf08698e2775045a23de5abe"></a><!-- doxytag: member="viennacl::linalg::cg_tag::cg_tag" ref="a987be47faf08698e2775045a23de5abe" args="(double tol=1e-8, unsigned int max_iterations=300)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>tol</em> = <code>1e-8</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>max_iterations</em> = <code>300</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>tol</em> </td><td>Relative tolerance for the residual (solver quits if ||r|| < tol * ||r_initial||) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>max_iterations</em> </td><td>The maximum number of iterations </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae75852c9d9bf937552ee5a1bafea818f"></a><!-- doxytag: member="viennacl::linalg::cg_tag::error" ref="ae75852c9d9bf937552ee5a1bafea818f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a086bf00d9923c3f80f62de3f8491a322"></a><!-- doxytag: member="viennacl::linalg::cg_tag::error" ref="a086bf00d9923c3f80f62de3f8491a322" args="(double e) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void error </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>e</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0643bc87331b97f3a90e71ec54ff205b"></a><!-- doxytag: member="viennacl::linalg::cg_tag::iters" ref="a0643bc87331b97f3a90e71ec54ff205b" args="(unsigned int i) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void iters </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a26002e6fe73ece7e16b125d9f4e97be9"></a><!-- doxytag: member="viennacl::linalg::cg_tag::iters" ref="a26002e6fe73ece7e16b125d9f4e97be9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int iters </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Return the number of solver iterations: </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0a4e05130e2f14ba0374b9570ae9525"></a><!-- doxytag: member="viennacl::linalg::cg_tag::max_iterations" ref="ab0a4e05130e2f14ba0374b9570ae9525" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int max_iterations </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of iterations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e99612a88de21eaeb07e55be78a28a3"></a><!-- doxytag: member="viennacl::linalg::cg_tag::tolerance" ref="a2e99612a88de21eaeb07e55be78a28a3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double tolerance </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the relative tolerance. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="cg_8hpp_source.html">cg.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1gmres__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1gmres__tag.html
deleted file mode 100644
index 50e00ab..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1gmres__tag.html
+++ /dev/null
@@ -1,278 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: gmres_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>gmres_tag Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::gmres_tag" -->
-<p>A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="gmres_8hpp_source.html">gmres.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">gmres_tag</a> (double tol=1e-10, unsigned int max_iterations=300, unsigned int krylov_dim=20)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor. <a href="#a83b42e2a7d307fb4d23a039027904fab"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">tolerance</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the relative tolerance. <a href="#a2e99612a88de21eaeb07e55be78a28a3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">max_iterations</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of iterations. <a href="#ab0a4e05130e2f14ba0374b9570ae9525"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">krylov_dim</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum dimension of the Krylov space before restart. <a href="#a5841d44a68cceea5176b41420649ce89"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">max_restarts</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum number of GMRES restarts. <a href="#a16290e7b3ac1b41c490bbcf2837937a8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">iters</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Return the number of solver iterations: <a href="#a26002e6fe73ece7e16b125d9f4e97be9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">iters</a> (unsigned int i) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the number of solver iterations (should only be modified by the solver). <a href="#a0643bc87331b97f3a90e71ec54ff205b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">error</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the estimated relative error at the end of the solver run. <a href="#ae75852c9d9bf937552ee5a1bafea818f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">error</a> (double e) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the estimated relative error at the end of the solver run. <a href="#a086bf00d9923c3f80f62de3f8491a322"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a83b42e2a7d307fb4d23a039027904fab"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::gmres_tag" ref="a83b42e2a7d307fb4d23a039027904fab" args="(double tol=1e-10, unsigned int max_iterations=300, unsigned int krylov_dim=20)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>tol</em> = <code>1e-10</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>max_iterations</em> = <code>300</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>krylov_dim</em> = <code>20</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>tol</em> </td><td>Relative tolerance for the residual (solver quits if ||r|| < tol * ||r_initial||) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>max_iterations</em> </td><td>The maximum number of iterations (including restarts </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>krylov_dim</em> </td><td>The maximum dimension of the Krylov space before restart (number of restarts is found by max_iterations / krylov_dim) </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae75852c9d9bf937552ee5a1bafea818f"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::error" ref="ae75852c9d9bf937552ee5a1bafea818f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double error </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a086bf00d9923c3f80f62de3f8491a322"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::error" ref="a086bf00d9923c3f80f62de3f8491a322" args="(double e) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void error </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>e</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the estimated relative error at the end of the solver run. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0643bc87331b97f3a90e71ec54ff205b"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::iters" ref="a0643bc87331b97f3a90e71ec54ff205b" args="(unsigned int i) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void iters </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Set the number of solver iterations (should only be modified by the solver). </p>
-
-</div>
-</div>
-<a class="anchor" id="a26002e6fe73ece7e16b125d9f4e97be9"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::iters" ref="a26002e6fe73ece7e16b125d9f4e97be9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int iters </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Return the number of solver iterations: </p>
-
-</div>
-</div>
-<a class="anchor" id="a5841d44a68cceea5176b41420649ce89"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::krylov_dim" ref="a5841d44a68cceea5176b41420649ce89" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int krylov_dim </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum dimension of the Krylov space before restart. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0a4e05130e2f14ba0374b9570ae9525"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::max_iterations" ref="ab0a4e05130e2f14ba0374b9570ae9525" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int max_iterations </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of iterations. </p>
-
-</div>
-</div>
-<a class="anchor" id="a16290e7b3ac1b41c490bbcf2837937a8"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::max_restarts" ref="a16290e7b3ac1b41c490bbcf2837937a8" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int max_restarts </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum number of GMRES restarts. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e99612a88de21eaeb07e55be78a28a3"></a><!-- doxytag: member="viennacl::linalg::gmres_tag::tolerance" ref="a2e99612a88de21eaeb07e55be78a28a3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double tolerance </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the relative tolerance. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="gmres_8hpp_source.html">gmres.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond.html
deleted file mode 100644
index 0c3b4f7..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: ilut_precond< MatrixType > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>ilut_precond< MatrixType > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::ilut_precond" -->
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a> (MatrixType const &mat, <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const &tag)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType><br/>
- class viennacl::linalg::ilut_precond< MatrixType ></h3>
-
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a1961e282ec4851df696e3d6808d1fcbe"></a><!-- doxytag: member="viennacl::linalg::ilut_precond::ilut_precond" ref="a1961e282ec4851df696e3d6808d1fcbe" args="(MatrixType const &mat, ilut_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a> </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::ilut_precond::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void apply </td>
- <td>(</td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index ec5b931..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >" -->
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const &mat, <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const &tag)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">apply</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< ScalarType > &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType, unsigned int MAT_ALIGNMENT><br/>
- class viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></h3>
-
-<p>ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<p>Specialization for <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a1961e282ec4851df696e3d6808d1fcbe"></a><!-- doxytag: member="viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::ilut_precond" ref="a1961e282ec4851df696e3d6808d1fcbe" args="(MatrixType const &mat, ilut_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a14dbb6add8cf6b44cf240ba3020404be"></a><!-- doxytag: member="viennacl::linalg::ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::apply" ref="a14dbb6add8cf6b44cf240ba3020404be" args="(vector< ScalarType > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void apply </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< ScalarType > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__tag.html
deleted file mode 100644
index 1a325b2..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1ilut__tag.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: ilut_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>ilut_tag Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::ilut_tag" -->
-<p>A tag for incomplete LU factorization with threshold (ILUT).
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">ilut_tag</a> (unsigned int entries_per_row=10, double drop_tolerance=1e-3)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The constructor. <a href="#a9308c6447d14308fcfac1f83f456108a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">set_drop_tolerance</a> (double tol)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">set_entries_per_row</a> (unsigned int e)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for incomplete LU factorization with threshold (ILUT). </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a9308c6447d14308fcfac1f83f456108a"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::ilut_tag" ref="a9308c6447d14308fcfac1f83f456108a" args="(unsigned int entries_per_row=10, double drop_tolerance=1e-3)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>entries_per_row</em> = <code>10</code>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>drop_tolerance</em> = <code>1e-3</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>entries_per_row</em> </td><td>Number of nonzero entries per row in L and U. Note that L and U are stored in a single matrix, thus there are 2*entries_per_row in total. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>drop_tolerance</em> </td><td>The drop tolerance for ILUT </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a3dca5fa27b598fea7c6db2861924965f"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::get_drop_tolerance" ref="a3dca5fa27b598fea7c6db2861924965f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">double get_drop_tolerance </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a24bd151db0892082aec946d18d0599ce"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::get_entries_per_row" ref="a24bd151db0892082aec946d18d0599ce" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int get_entries_per_row </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a146cc7a6b6e8ebb052f057416f7d356d"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::set_drop_tolerance" ref="a146cc7a6b6e8ebb052f057416f7d356d" args="(double tol)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void set_drop_tolerance </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>tol</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af01a20f9ca9bdd5264128ef2f57b0b11"></a><!-- doxytag: member="viennacl::linalg::ilut_tag::set_entries_per_row" ref="af01a20f9ca9bdd5264128ef2f57b0b11" args="(unsigned int e)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void set_entries_per_row </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>e</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp_source.html">ilu.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond.html
deleted file mode 100644
index 6a59e3f..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: jacobi_precond< MatrixType > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>jacobi_precond< MatrixType > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::jacobi_precond" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a> (MatrixType const &mat, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const &tag)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),. <a href="#a58cb0bc6ab58fc3b770c91cc15362d0a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType><br/>
- class viennacl::linalg::jacobi_precond< MatrixType ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a784aceacd83c8ffda5a601bbf332b7b3"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond::jacobi_precond" ref="a784aceacd83c8ffda5a601bbf332b7b3" args="(MatrixType const &mat, jacobi_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a> </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void apply </td>
- <td>(</td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index 60f197f..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const &mat, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const &tag)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">init_gpu</a> ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">apply</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType, unsigned int MAT_ALIGNMENT><br/>
- class viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<p>Specialization for <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a784aceacd83c8ffda5a601bbf332b7b3"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::jacobi_precond" ref="a784aceacd83c8ffda5a601bbf332b7b3" args="(MatrixType const &mat, jacobi_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a5f15f216a95536e869b31f5e529fe975"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::apply" ref="a5f15f216a95536e869b31f5e529fe975" args="(viennacl::vector< ScalarType, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void apply </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9688692acd00f424e984302f94f328c2"></a><!-- doxytag: member="viennacl::linalg::jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::init_gpu" ref="a9688692acd00f424e984302f94f328c2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void init_gpu </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__tag.html
deleted file mode 100644
index 32e9427..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1jacobi__tag.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: jacobi_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>jacobi_tag Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::jacobi_tag" -->
-<p>A tag for a jacobi preconditioner.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for a jacobi preconditioner. </p>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp_source.html">jacobi_precond.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1no__precond.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1no__precond.html
deleted file mode 100644
index 12948d7..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1no__precond.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: no_precond Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>no_precond Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::no_precond" -->
-<p>A tag class representing the use of no preconditioner.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing the use of no preconditioner. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::no_precond::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void apply </td>
- <td>(</td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling.html
deleted file mode 100644
index a9945bf..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_scaling< MatrixType > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>row_scaling< MatrixType > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::row_scaling" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">row_scaling</a> (MatrixType const &mat, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor for the preconditioner. <a href="#a505b14065ba3fd81710d349907a73334"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a> (VectorType &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Apply to res = b - Ax, i.e. row applied vec (right hand side),. <a href="#a58cb0bc6ab58fc3b770c91cc15362d0a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType><br/>
- class viennacl::linalg::row_scaling< MatrixType ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a505b14065ba3fd81710d349907a73334"></a><!-- doxytag: member="viennacl::linalg::row_scaling::row_scaling" ref="a505b14065ba3fd81710d349907a73334" args="(MatrixType const &mat, row_scaling_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a> </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor for the preconditioner. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>A row scaling tag holding the desired norm. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a58cb0bc6ab58fc3b770c91cc15362d0a"></a><!-- doxytag: member="viennacl::linalg::row_scaling::apply" ref="a58cb0bc6ab58fc3b770c91cc15362d0a" args="(VectorType &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void apply </td>
- <td>(</td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Apply to res = b - Ax, i.e. row applied vec (right hand side),. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index f1d7e60..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >" -->
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">row_scaling</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const &mat, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor for the preconditioner. <a href="#a505b14065ba3fd81710d349907a73334"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">init_gpu</a> ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">apply</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > &vec) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType, unsigned int MAT_ALIGNMENT><br/>
- class viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></h3>
-
-<p>Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. </p>
-<p>Specialization for <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a505b14065ba3fd81710d349907a73334"></a><!-- doxytag: member="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::row_scaling" ref="a505b14065ba3fd81710d349907a73334" args="(MatrixType const &mat, row_scaling_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1compressed__matrix.html">MatrixType</a> const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor for the preconditioner. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>A row scaling tag holding the desired norm. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a5f15f216a95536e869b31f5e529fe975"></a><!-- doxytag: member="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::apply" ref="a5f15f216a95536e869b31f5e529fe975" args="(viennacl::vector< ScalarType, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void apply </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9688692acd00f424e984302f94f328c2"></a><!-- doxytag: member="viennacl::linalg::row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > >::init_gpu" ref="a9688692acd00f424e984302f94f328c2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void init_gpu </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling__tag.html b/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling__tag.html
deleted file mode 100644
index ce0af54..0000000
--- a/doc/doxygen/html/classviennacl_1_1linalg_1_1row__scaling__tag.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_scaling_tag Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>row_scaling_tag Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::row_scaling_tag" -->
-<p>A tag for a row preconditioner.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">row_scaling_tag</a> (unsigned int p=2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#a12412041036e5beed6c8c1e0f2fade5e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">norm</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and p=2 supported. <a href="#a1122a7018fc4679fa8f6aaf37976f687"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for a row preconditioner. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a12412041036e5beed6c8c1e0f2fade5e"></a><!-- doxytag: member="viennacl::linalg::row_scaling_tag::row_scaling_tag" ref="a12412041036e5beed6c8c1e0f2fade5e" args="(unsigned int p=2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a> </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>p</em> = <code>2</code></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>Integer selecting the desired row norm. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a1122a7018fc4679fa8f6aaf37976f687"></a><!-- doxytag: member="viennacl::linalg::row_scaling_tag::norm" ref="a1122a7018fc4679fa8f6aaf37976f687" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int norm </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and p=2 supported. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp_source.html">row_scaling.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1matrix.html b/doc/doxygen/html/classviennacl_1_1matrix.html
deleted file mode 100644
index ac05c85..0000000
--- a/doc/doxygen/html/classviennacl_1_1matrix.html
+++ /dev/null
@@ -1,960 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix< SCALARTYPE, F, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> </div>
- <div class="headertitle">
-<h1>matrix< SCALARTYPE, F, ALIGNMENT > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::matrix" -->
-<p>A dense matrix class.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><br class="typebreak"/>
-< <a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><br class="typebreak"/>
-< <a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT > > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">iterator2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">matrix</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The default constructor. Does not allocate any memory. <a href="#a2b7f607d95bd2aeb66a382ff2df384c3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a67e5572450ecba91b1bfe1f691236bbd">matrix</a> (unsigned int rows, unsigned int columns)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates the matrix with the given dimensions. <a href="#a67e5572450ecba91b1bfe1f691236bbd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ad97f1c76628466ba92630597913b7798">matrix</a> (cl_mem mem, unsigned int rows, unsigned int columns)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a625b18f427f3642439f1a84f01fd1a16">matrix</a> (<a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a26544386781d4023aa902d3cb922e0eb">matrix</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator=</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a8130ec92bb6c6f3d9522c5e32528bdfc">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">resize</a> (unsigned int rows, unsigned int columns, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resizes the matrix. Existing entries can be preserved, but. <a href="#a76ffc3a247bdd7e9a4225f14744c1f23"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">operator()</a> (unsigned int row_index, unsigned int col_index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read-write access to a single element of the vector. <a href="#aee035c6150315c1511e4abfda4b17571"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">operator()</a> (unsigned int row_index, unsigned int col_index) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read access to a single element of the vector. <a href="#a85566d47047a4d034c6f5afcb3411b33"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_add > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">operator+</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator+=</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_sub > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">operator-</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator-=</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &other)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a0e5c37d9c65e5c457816ebabde5dfe6b">operator+=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac48ef303a00c6f0418fd991779bba455">operator-=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a9f0249af669fc7dfa3e9baf15c74fefb">operator+=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int A1, unsigned int A2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">operator-=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">operator*=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ab87ac2c48bb2b05ce27a01180e09f869">operator*=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">operator/=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">operator/=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType1 , typename MatrixType2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< MatrixType1, MatrixType2, op_prod > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a3aaa450a353d0d7ff4bf89740a92a5c3">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_add > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">operator=</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_sub > &proxy)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of rows. <a href="#a10aa70c5b59457061b66e118e8fc05e4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of columns. <a href="#ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resets all entries to zero. <a href="#ac8bb3912a3ce86b15842e79d0b421204"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">internal_size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal number of rows. Usually required for launching OpenCL kernels only. <a href="#a4854e3e0aa7a3751f63f6602b38ee4b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">internal_size2</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal number of columns. Usually required for launching OpenCL kernels only. <a href="#acd1a1df1441c667eded344541031a335"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">internal_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE). <a href="#ac3019718fecac86d25ad8446e57bdd34"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle. <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE2 , typename F2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE2 , typename A1 , typename A2 , typename F2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a16f29c7064c0aa97dfbf324336c5176a">copy</a> (const std::vector< std::vector< SCALARTYPE2, A1 >, A2 > &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE2 , typename F2 , unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">fast_copy</a> (SCALARTYPE2 *cpu_matrix_begin, SCALARTYPE2 *cpu_matrix_end, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, typename F, unsigned int ALIGNMENT><br/>
- class viennacl::matrix< SCALARTYPE, F, ALIGNMENT ></h3>
-
-<p>A dense matrix class. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The underlying scalar type (either float or double) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>F</em> </td><td>Storage layout: Either <a class="el" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a> or <a class="el" href="structviennacl_1_1column__major.html">column_major</a> (at present only <a class="el" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a> is supported) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size is given by (<a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory. </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ac726b43e88eee76bc8d8eb9dcd8a5fb4"></a><!-- doxytag: member="viennacl::matrix::iterator1" ref="ac726b43e88eee76bc8d8eb9dcd8a5fb4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><<a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT> > <a class="el" href="classviennacl_1_1matrix__iterator.html">iterator1</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac85ff703941f442ef2b38ce83b71d808"></a><!-- doxytag: member="viennacl::matrix::iterator2" ref="ac85ff703941f442ef2b38ce83b71d808" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a><<a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a>, <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT> > <a class="el" href="classviennacl_1_1matrix__iterator.html">iterator2</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::matrix::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a2b7f607d95bd2aeb66a382ff2df384c3"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a2b7f607d95bd2aeb66a382ff2df384c3" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The default constructor. Does not allocate any memory. </p>
-
-</div>
-</div>
-<a class="anchor" id="a67e5572450ecba91b1bfe1f691236bbd"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a67e5572450ecba91b1bfe1f691236bbd" args="(unsigned int rows, unsigned int columns)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>columns</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Creates the matrix with the given dimensions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>Number of rows </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>columns</em> </td><td>Number of columns </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad97f1c76628466ba92630597913b7798"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="ad97f1c76628466ba92630597913b7798" args="(cl_mem mem, unsigned int rows, unsigned int columns)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
- <td>(</td>
- <td class="paramtype">cl_mem </td>
- <td class="paramname"> <em>mem</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>columns</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a625b18f427f3642439f1a84f01fd1a16"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a625b18f427f3642439f1a84f01fd1a16" args="(matrix_expression< LHS, RHS, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a26544386781d4023aa902d3cb922e0eb"></a><!-- doxytag: member="viennacl::matrix::matrix" ref="a26544386781d4023aa902d3cb922e0eb" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a><!-- doxytag: member="viennacl::matrix::clear" ref="ac8bb3912a3ce86b15842e79d0b421204" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void clear </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Resets all entries to zero. </p>
-
-</div>
-</div>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::matrix::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac3019718fecac86d25ad8446e57bdd34"></a><!-- doxytag: member="viennacl::matrix::internal_size" ref="ac3019718fecac86d25ad8446e57bdd34" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int internal_size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE). </p>
-
-</div>
-</div>
-<a class="anchor" id="a4854e3e0aa7a3751f63f6602b38ee4b3"></a><!-- doxytag: member="viennacl::matrix::internal_size1" ref="a4854e3e0aa7a3751f63f6602b38ee4b3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int internal_size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the internal number of rows. Usually required for launching OpenCL kernels only. </p>
-
-</div>
-</div>
-<a class="anchor" id="acd1a1df1441c667eded344541031a335"></a><!-- doxytag: member="viennacl::matrix::internal_size2" ref="acd1a1df1441c667eded344541031a335" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int internal_size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the internal number of columns. Usually required for launching OpenCL kernels only. </p>
-
-</div>
-</div>
-<a class="anchor" id="aee035c6150315c1511e4abfda4b17571"></a><!-- doxytag: member="viennacl::matrix::operator()" ref="aee035c6150315c1511e4abfda4b17571" args="(unsigned int row_index, unsigned int col_index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a><SCALARTYPE> operator() </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>row_index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>col_index</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Read-write access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a85566d47047a4d034c6f5afcb3411b33"></a><!-- doxytag: member="viennacl::matrix::operator()" ref="a85566d47047a4d034c6f5afcb3411b33" args="(unsigned int row_index, unsigned int col_index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> operator() </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>row_index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>col_index</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Read access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="af9d2e9edda2d1896fcbcf2d6068bd90f"></a><!-- doxytag: member="viennacl::matrix::operator*=" ref="af9d2e9edda2d1896fcbcf2d6068bd90f" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator*= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab87ac2c48bb2b05ce27a01180e09f869"></a><!-- doxytag: member="viennacl::matrix::operator*=" ref="ab87ac2c48bb2b05ce27a01180e09f869" args="(scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator*= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7693f9e5a4310f9f89ab8c5fadc2c5c0"></a><!-- doxytag: member="viennacl::matrix::operator+" ref="a7693f9e5a4310f9f89ab8c5fadc2c5c0" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_add > operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0e5c37d9c65e5c457816ebabde5dfe6b"></a><!-- doxytag: member="viennacl::matrix::operator+=" ref="a0e5c37d9c65e5c457816ebabde5dfe6b" args="(const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9f0249af669fc7dfa3e9baf15c74fefb"></a><!-- doxytag: member="viennacl::matrix::operator+=" ref="a9f0249af669fc7dfa3e9baf15c74fefb" args="(const matrix_expression< const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a017324eb06f5b4f9f43a1931d151e99c"></a><!-- doxytag: member="viennacl::matrix::operator+=" ref="a017324eb06f5b4f9f43a1931d151e99c" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ada8b83b6ead4dfed5ec3c087580cf6b9"></a><!-- doxytag: member="viennacl::matrix::operator-" ref="ada8b83b6ead4dfed5ec3c087580cf6b9" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_sub > operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeaadfa9e3ffd70b4d4787bc832a964e6"></a><!-- doxytag: member="viennacl::matrix::operator-=" ref="aeaadfa9e3ffd70b4d4787bc832a964e6" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac48ef303a00c6f0418fd991779bba455"></a><!-- doxytag: member="viennacl::matrix::operator-=" ref="ac48ef303a00c6f0418fd991779bba455" args="(const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf94aa936b88e8840684fdcb71c975af"></a><!-- doxytag: member="viennacl::matrix::operator-=" ref="abf94aa936b88e8840684fdcb71c975af" args="(const matrix_expression< const matrix_expression< const vector< SCALARTYPE, A1 >, const vector< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A1 >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A2 >, op_prod >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9bc4ea8061b64ebd021610e805e00f76"></a><!-- doxytag: member="viennacl::matrix::operator/=" ref="a9bc4ea8061b64ebd021610e805e00f76" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator/= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a613b5b6e9bc337aea80d09e92179c204"></a><!-- doxytag: member="viennacl::matrix::operator/=" ref="a613b5b6e9bc337aea80d09e92179c204" args="(scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator/= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3aaa450a353d0d7ff4bf89740a92a5c3"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="a3aaa450a353d0d7ff4bf89740a92a5c3" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_add > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_add > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adc76eef234678aba57478ab41b5880f1"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="adc76eef234678aba57478ab41b5880f1" args="(const matrix_expression< MatrixType1, MatrixType2, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< MatrixType1, MatrixType2, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aaa1fd1f887b588b66d3eae3a264b09cb"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="aaa1fd1f887b588b66d3eae3a264b09cb" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_sub > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_sub > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8130ec92bb6c6f3d9522c5e32528bdfc"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="a8130ec92bb6c6f3d9522c5e32528bdfc" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa609ee520223e208f4a39a78522865c3"></a><!-- doxytag: member="viennacl::matrix::operator=" ref="aa609ee520223e208f4a39a78522865c3" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a76ffc3a247bdd7e9a4225f14744c1f23"></a><!-- doxytag: member="viennacl::matrix::resize" ref="a76ffc3a247bdd7e9a4225f14744c1f23" args="(unsigned int rows, unsigned int columns, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void resize </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>columns</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Resizes the matrix. Existing entries can be preserved, but. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>rows</em> </td><td>New number of rows </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>columns</em> </td><td>New number of columns </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, existing values are preserved. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a10aa70c5b59457061b66e118e8fc05e4"></a><!-- doxytag: member="viennacl::matrix::size1" ref="a10aa70c5b59457061b66e118e8fc05e4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int& size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of rows. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac1b69377d2b4e37ccb5fab0fa125bc9a"></a><!-- doxytag: member="viennacl::matrix::size2" ref="ac1b69377d2b4e37ccb5fab0fa125bc9a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const unsigned int& size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of columns. </p>
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="a6d60b3ee25e9dec224c68f00f4a3a97f"></a><!-- doxytag: member="viennacl::matrix::copy" ref="a6d60b3ee25e9dec224c68f00f4a3a97f" args="(const CPU_MATRIX &cpu_matrix, matrix< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void copy </td>
- <td>(</td>
- <td class="paramtype">const CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [friend]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a16f29c7064c0aa97dfbf324336c5176a"></a><!-- doxytag: member="viennacl::matrix::copy" ref="a16f29c7064c0aa97dfbf324336c5176a" args="(const std::vector< std::vector< SCALARTYPE2, A1 >, A2 > &cpu_matrix, matrix< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void copy </td>
- <td>(</td>
- <td class="paramtype">const std::vector< std::vector< SCALARTYPE2, A1 >, A2 > & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [friend]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a482880bc796727f4dcb859a2ceb64c6d"></a><!-- doxytag: member="viennacl::matrix::fast_copy" ref="a482880bc796727f4dcb859a2ceb64c6d" args="(SCALARTYPE2 *cpu_matrix_begin, SCALARTYPE2 *cpu_matrix_end, matrix< SCALARTYPE2, F2, ALIGNMENT2 > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void fast_copy </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE2 * </td>
- <td class="paramname"> <em>cpu_matrix_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE2 * </td>
- <td class="paramname"> <em>cpu_matrix_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE2, F2, ALIGNMENT2 > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [friend]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1matrix__expression.html b/doc/doxygen/html/classviennacl_1_1matrix__expression.html
deleted file mode 100644
index 9c8bf17..0000000
--- a/doc/doxygen/html/classviennacl_1_1matrix__expression.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_expression< LHS, RHS, OP > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_expression< LHS, RHS, OP > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::matrix_expression" -->
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">matrix_expression</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from the two operands. <a href="#a466edf19960e38ab2eecab2109956c53"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">LHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">lhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get left hand side operand. <a href="#abb680866089de4e937ddc6ce6f1f1830"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">RHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">rhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get right hand side operand. <a href="#a563f5aecaa0755006225235e44a11a82"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the size of the result vector. <a href="#a890ed2f6c982169c737bd4f68b2a5db7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a> () const </td></tr>
-</table>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- class viennacl::matrix_expression< LHS, RHS, OP ></h3>
-
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a466edf19960e38ab2eecab2109956c53"></a><!-- doxytag: member="viennacl::matrix_expression::matrix_expression" ref="a466edf19960e38ab2eecab2109956c53" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a> </td>
- <td>(</td>
- <td class="paramtype">LHS & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">RHS & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Extracts the vector type from the two operands. </p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abb680866089de4e937ddc6ce6f1f1830"></a><!-- doxytag: member="viennacl::matrix_expression::lhs" ref="abb680866089de4e937ddc6ce6f1f1830" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">LHS& lhs </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Get left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a563f5aecaa0755006225235e44a11a82"></a><!-- doxytag: member="viennacl::matrix_expression::rhs" ref="a563f5aecaa0755006225235e44a11a82" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">RHS& rhs </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Get right hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a890ed2f6c982169c737bd4f68b2a5db7"></a><!-- doxytag: member="viennacl::matrix_expression::size1" ref="a890ed2f6c982169c737bd4f68b2a5db7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the size of the result vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="aacffdea3e049b0080b6fa4ac4c2fd881"></a><!-- doxytag: member="viennacl::matrix_expression::size2" ref="aacffdea3e049b0080b6fa4ac4c2fd881" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1matrix__iterator.html b/doc/doxygen/html/classviennacl_1_1matrix__iterator.html
deleted file mode 100644
index 75c84a3..0000000
--- a/doc/doxygen/html/classviennacl_1_1matrix__iterator.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_iterator< ROWCOL, MATRIXTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_iterator< ROWCOL, MATRIXTYPE > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::matrix_iterator" -->
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef MATRIXTYPE::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator</a> (MATRIXTYPE &mat, unsigned int start_row, unsigned int start_col)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">operator*</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">operator==</a> (<a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">operator!=</a> (<a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">index1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">index2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">MATRIXTYPE & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">operator()</a> (void) const </td></tr>
-</table>
-<h3>template<typename ROWCOL, typename MATRIXTYPE><br/>
- class viennacl::matrix_iterator< ROWCOL, MATRIXTYPE ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a4d1008b55c3e6de3a019d5514c4393d8"></a><!-- doxytag: member="viennacl::matrix_iterator::value_type" ref="a4d1008b55c3e6de3a019d5514c4393d8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef MATRIXTYPE::value_type <a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="af0a6ccd186d6da5fae3227b45fbfcf5a"></a><!-- doxytag: member="viennacl::matrix_iterator::matrix_iterator" ref="af0a6ccd186d6da5fae3227b45fbfcf5a" args="(MATRIXTYPE &mat, unsigned int start_row, unsigned int start_col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a> </td>
- <td>(</td>
- <td class="paramtype">MATRIXTYPE & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>start_row</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>start_col</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a4c13e5b96cb010e538968b7c330dbfbd"></a><!-- doxytag: member="viennacl::matrix_iterator::index1" ref="a4c13e5b96cb010e538968b7c330dbfbd" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int index1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3b437ced850483c2d50f888a33463c95"></a><!-- doxytag: member="viennacl::matrix_iterator::index2" ref="a3b437ced850483c2d50f888a33463c95" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int index2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a111e186f57ea74111730a997ba77ea17"></a><!-- doxytag: member="viennacl::matrix_iterator::operator!=" ref="a111e186f57ea74111730a997ba77ea17" args="(self_type const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator!= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a472f3f82844b2d229acbd12e34d6764b"></a><!-- doxytag: member="viennacl::matrix_iterator::operator()" ref="a472f3f82844b2d229acbd12e34d6764b" args="(void) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">MATRIXTYPE& operator() </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a94001b4941ee37e508c3442528389b16"></a><!-- doxytag: member="viennacl::matrix_iterator::operator*" ref="a94001b4941ee37e508c3442528389b16" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a> operator* </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5055e4100b53acad1be8697088ff1dc"></a><!-- doxytag: member="viennacl::matrix_iterator::operator++" ref="aa5055e4100b53acad1be8697088ff1dc" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a>& operator++ </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4419c6af964a7de542db8474f8ef1091"></a><!-- doxytag: member="viennacl::matrix_iterator::operator++" ref="a4419c6af964a7de542db8474f8ef1091" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a>& operator++ </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad25b9ad360f06fda1535074b749cf023"></a><!-- doxytag: member="viennacl::matrix_iterator::operator==" ref="ad25b9ad360f06fda1535074b749cf023" args="(self_type const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator== </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1backend.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1backend.html
deleted file mode 100644
index 37880c5..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1backend.html
+++ /dev/null
@@ -1,309 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: backend< dummy > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>backend< dummy > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::backend" -->
-<p>A backend that provides contexts for ViennaCL objects (vector, matrix, etc.).
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="backend_8hpp_source.html">backend.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">switch_context</a> (long i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Switches the current context to the context identified by i. <a href="#ab476349b4b424527038f7484c1f0097b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current active context. <a href="#a672f8aadf6dc07b765887b69d4ebbf7d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">get_queue</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current queue for the active device in the active context. <a href="#a825af6f15ffeb9448de160661e5bb377"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">setup_context</a> (long i, std::vector< cl_device_id > const &devices)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a number of devices for the context. <a href="#aee6bc733f6369cd7147ea8904cc8c734"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#ac0a9ddc7f74148e9f5fe8bc5872e4da7">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes ViennaCL with an already existing context. <a href="#ac0a9ddc7f74148e9f5fe8bc5872e4da7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a2d0605c63ed50df91d198700387e1372">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes ViennaCL with an already existing context. <a href="#a2d0605c63ed50df91d198700387e1372"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">set_context_device_type</a> (long i, cl_device_type t)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the context device type. <a href="#a4c8905ac7d2b12cdb0d3582561d78eff"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<bool dummy = false><br/>
- class viennacl::ocl::backend< dummy ></h3>
-
-<p>A backend that provides contexts for ViennaCL objects (vector, matrix, etc.). </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a672f8aadf6dc07b765887b69d4ebbf7d"></a><!-- doxytag: member="viennacl::ocl::backend::current_context" ref="a672f8aadf6dc07b765887b69d4ebbf7d" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a>& current_context </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a825af6f15ffeb9448de160661e5bb377"></a><!-- doxytag: member="viennacl::ocl::backend::get_queue" ref="a825af6f15ffeb9448de160661e5bb377" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& get_queue </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the current queue for the active device in the active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4c8905ac7d2b12cdb0d3582561d78eff"></a><!-- doxytag: member="viennacl::ocl::backend::set_context_device_type" ref="a4c8905ac7d2b12cdb0d3582561d78eff" args="(long i, cl_device_type t)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void set_context_device_type </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_device_type </td>
- <td class="paramname"> <em>t</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the context device type. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac0a9ddc7f74148e9f5fe8bc5872e4da7"></a><!-- doxytag: member="viennacl::ocl::backend::setup_context" ref="ac0a9ddc7f74148e9f5fe8bc5872e4da7" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void setup_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_context </td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_device_id > const & </td>
- <td class="paramname"> <em>devices</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::map< cl_device_id, std::vector< cl_command_queue > > const & </td>
- <td class="paramname"> <em>queues</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes ViennaCL with an already existing context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the context to be set up </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>The OpenCL handle of the existing context </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>devices</em> </td><td>A vector of OpenCL device-IDs that should be added to the context </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>queues</em> </td><td>A map of queues for each device </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aee6bc733f6369cd7147ea8904cc8c734"></a><!-- doxytag: member="viennacl::ocl::backend::setup_context" ref="aee6bc733f6369cd7147ea8904cc8c734" args="(long i, std::vector< cl_device_id > const &devices)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void setup_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_device_id > const & </td>
- <td class="paramname"> <em>devices</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets a number of devices for the context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the context to be set up </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>devices</em> </td><td>A vector of OpenCL device-IDs that should be added to the context </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2d0605c63ed50df91d198700387e1372"></a><!-- doxytag: member="viennacl::ocl::backend::setup_context" ref="a2d0605c63ed50df91d198700387e1372" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queue)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void setup_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_context </td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_device_id > const & </td>
- <td class="paramname"> <em>devices</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_command_queue > const & </td>
- <td class="paramname"> <em>queue</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes ViennaCL with an already existing context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the context to be set up </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>The OpenCL handle of the existing context </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>devices</em> </td><td>A vector of OpenCL device-IDs that should be added to the context </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>queue</em> </td><td>One queue per device </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab476349b4b424527038f7484c1f0097b"></a><!-- doxytag: member="viennacl::ocl::backend::switch_context" ref="ab476349b4b424527038f7484c1f0097b" args="(long i)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void switch_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Switches the current context to the context identified by i. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>ID of the new active context </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="backend_8hpp_source.html">backend.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1build__program__failure.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1build__program__failure.html
deleted file mode 100644
index 9559b84..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1build__program__failure.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: build_program_failure Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>build_program_failure Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::build_program_failure" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1command__queue.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1command__queue.html
deleted file mode 100644
index 5788eeb..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1command__queue.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: command_queue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>command_queue Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::command_queue" -->
-<p>A class representing a command queue.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="command__queue_8hpp_source.html">command_queue.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">command_queue</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab6b585ec6f27ddcefe7fee6ffcb226d3">command_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_command_queue > h, cl_device_id dev)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">command_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">operator=</a> (<a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">finish</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Waits until all kernels in the queue have finished their execution. <a href="#adc3c5cffb594b811f8a851924349af5b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">flush</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Waits until all kernels in the queue have started their execution. <a href="#ab7e40dfa63aeb29fa6078d04795dffed"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_command_queue > const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A class representing a command queue. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aba31105fa2a4846b873a623250654765"></a><!-- doxytag: member="viennacl::ocl::command_queue::command_queue" ref="aba31105fa2a4846b873a623250654765" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab6b585ec6f27ddcefe7fee6ffcb226d3"></a><!-- doxytag: member="viennacl::ocl::command_queue::command_queue" ref="ab6b585ec6f27ddcefe7fee6ffcb226d3" args="(viennacl::ocl::handle< cl_command_queue > h, cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_command_queue > </td>
- <td class="paramname"> <em>h</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>dev</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8d0b958ef5c2d71eceeccafc994ef5d6"></a><!-- doxytag: member="viennacl::ocl::command_queue::command_queue" ref="a8d0b958ef5c2d71eceeccafc994ef5d6" args="(command_queue const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="adc3c5cffb594b811f8a851924349af5b"></a><!-- doxytag: member="viennacl::ocl::command_queue::finish" ref="adc3c5cffb594b811f8a851924349af5b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void finish </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Waits until all kernels in the queue have finished their execution. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab7e40dfa63aeb29fa6078d04795dffed"></a><!-- doxytag: member="viennacl::ocl::command_queue::flush" ref="ab7e40dfa63aeb29fa6078d04795dffed" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void flush </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Waits until all kernels in the queue have started their execution. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8c301f0516a039dbac9b263be6e70815"></a><!-- doxytag: member="viennacl::ocl::command_queue::handle" ref="a8c301f0516a039dbac9b263be6e70815" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_command_queue> const& <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0cbf9009ed0ae2f832646cc41a843a72"></a><!-- doxytag: member="viennacl::ocl::command_queue::operator=" ref="a0cbf9009ed0ae2f832646cc41a843a72" args="(command_queue const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="command__queue_8hpp_source.html">command_queue.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1compiler__not__available.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1compiler__not__available.html
deleted file mode 100644
index 615f140..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1compiler__not__available.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compiler_not_available Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>compiler_not_available Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::compiler_not_available" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1context.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1context.html
deleted file mode 100644
index 3ed8d94..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1context.html
+++ /dev/null
@@ -1,694 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: context Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>context Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::context" -->
-<p><code>#include <<a class="el" href="context_8hpp_source.html">context.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_device_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19">default_device_type</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the default device type for the context. <a href="#a721482c91a5042d1457b76addf95ff19"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">default_device_type</a> (cl_device_type dtype)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the device type for this context. <a href="#aa52e297b2bed0c1bda1d7ca8ecdd0620"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::vector<br class="typebreak"/>
-< <a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> ><br class="typebreak"/>
- const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">devices</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a vector with all devices in this context. <a href="#acd464974135d4def89834832207da4b9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">current_device</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the current device. <a href="#ad1be9bca91f95427bc2875827baadab4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e">switch_device</a> (size_t i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Switches the current device to the i-th device in this context. <a href="#a9f74ed0d416018dc2825ddc6f4d8101e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a3d316253d55eade417eee44bb38b127c">switch_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">If the supplied device is used within the context, it becomes the current active device. <a href="#a3d316253d55eade417eee44bb38b127c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">add_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a device to the context. Must be done before the context is initialized. <a href="#acfd4efd12222f075766bda8ad1557cf5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a9d802c8ffe94de98a9c049dbf4a3561d">add_device</a> (cl_device_id d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Add a device to the context. Must be done before the context is initialized. <a href="#a9d802c8ffe94de98a9c049dbf4a3561d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">init</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes a new context. <a href="#a02fd73d861ef2e4aabb38c0c9ff82947"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">init</a> (cl_context c)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes the context from an existing, user-supplied context. <a href="#a22330fee3e871b4f8467c8952a94597c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5">create_memory</a> (cl_mem_flags flags, unsigned int size, void *ptr=NULL)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a memory buffer within the context. <a href="#a22299eef7ac0c36ba322a2bb25e953c5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A , template< typename, typename > class VectorType> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a1e038c8113ae2ce29ce49264573aaad3">create_memory</a> (cl_mem_flags flags, const VectorType< SCALARTYPE, A > &_buffer)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a memory buffer within the context initialized from the supplied data. <a href="#a1e038c8113ae2ce29ce49264573aaad3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">add_queue</a> (cl_device_id dev, cl_command_queue q)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds an existing queue for the given device to the context. <a href="#a52bf0f755d6ac169258502c22b179d3f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a3998738469ebf1f8168b246e2c1cd175">add_queue</a> (cl_device_id dev)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a queue for the given device to the context. <a href="#a3998738469ebf1f8168b246e2c1cd175"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08">add_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a queue for the given device to the context. <a href="#ac171d50dc65c9edb5f30327d6549bd08"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a52653c861c4b28157632901b3b401a93">get_queue</a> (cl_device_id dev, size_t i=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the queue with the provided index for the given device. <a href="#a52653c861c4b28157632901b3b401a93"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">add_program</a> (cl_program p, std::string const &prog_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a program to the context. <a href="#a87c0fbb40f4ee1928c72dbf8d19512bb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a79fd3f2c5fd14ff3cf130504949538dc">add_program</a> (std::string const &source, std::string const &prog_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a new program with the provided source to the context. <a href="#a79fd3f2c5fd14ff3cf130504949538dc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">get_program</a> (std::string const &name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the program with the provided name. <a href="#a9258b6b0121e6f1bebe7b83b9e2a625a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a69eae83a60cdc4b1365dca0e7bd93a44">get_program</a> (size_t id)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the program with the provided id. <a href="#a69eae83a60cdc4b1365dca0e7bd93a44"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">program_num</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of programs within this context. <a href="#a05252a29e4e6aa036db1e8b784ed28ec"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">device_num</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of devices within this context. <a href="#a2921a13758255386f686ba24ebc86140"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_context > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the context handle. <a href="#a04a2acfc068529af42d1772382a20b90"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">operator<</a> (<a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Less-than comparable for compatibility with std:map. <a href="#ae03a1e8a810ded73e6a457729f02a6fe"></a><br/></td></tr>
-</table>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a23a1f7bd41068b622c4015f5654ee3f3"></a><!-- doxytag: member="viennacl::ocl::context::context" ref="a23a1f7bd41068b622c4015f5654ee3f3" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acfd4efd12222f075766bda8ad1557cf5"></a><!-- doxytag: member="viennacl::ocl::context::add_device" ref="acfd4efd12222f075766bda8ad1557cf5" args="(viennacl::ocl::device const &d)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_device </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td>
- <td class="paramname"> <em>d</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Add a device to the context. Must be done before the context is initialized. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9d802c8ffe94de98a9c049dbf4a3561d"></a><!-- doxytag: member="viennacl::ocl::context::add_device" ref="a9d802c8ffe94de98a9c049dbf4a3561d" args="(cl_device_id d)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_device </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>d</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Add a device to the context. Must be done before the context is initialized. </p>
-
-</div>
-</div>
-<a class="anchor" id="a87c0fbb40f4ee1928c72dbf8d19512bb"></a><!-- doxytag: member="viennacl::ocl::context::add_program" ref="a87c0fbb40f4ee1928c72dbf8d19512bb" args="(cl_program p, std::string const &prog_name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& add_program </td>
- <td>(</td>
- <td class="paramtype">cl_program </td>
- <td class="paramname"> <em>p</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>prog_name</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a program to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a79fd3f2c5fd14ff3cf130504949538dc"></a><!-- doxytag: member="viennacl::ocl::context::add_program" ref="a79fd3f2c5fd14ff3cf130504949538dc" args="(std::string const &source, std::string const &prog_name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& add_program </td>
- <td>(</td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>source</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>prog_name</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a new program with the provided source to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a52bf0f755d6ac169258502c22b179d3f"></a><!-- doxytag: member="viennacl::ocl::context::add_queue" ref="a52bf0f755d6ac169258502c22b179d3f" args="(cl_device_id dev, cl_command_queue q)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_queue </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>dev</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_command_queue </td>
- <td class="paramname"> <em>q</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds an existing queue for the given device to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3998738469ebf1f8168b246e2c1cd175"></a><!-- doxytag: member="viennacl::ocl::context::add_queue" ref="a3998738469ebf1f8168b246e2c1cd175" args="(cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_queue </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>dev</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a queue for the given device to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac171d50dc65c9edb5f30327d6549bd08"></a><!-- doxytag: member="viennacl::ocl::context::add_queue" ref="ac171d50dc65c9edb5f30327d6549bd08" args="(viennacl::ocl::device d)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_queue </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> </td>
- <td class="paramname"> <em>d</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a queue for the given device to the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a22299eef7ac0c36ba322a2bb25e953c5"></a><!-- doxytag: member="viennacl::ocl::context::create_memory" ref="a22299eef7ac0c36ba322a2bb25e953c5" args="(cl_mem_flags flags, unsigned int size, void *ptr=NULL)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> create_memory </td>
- <td>(</td>
- <td class="paramtype">cl_mem_flags </td>
- <td class="paramname"> <em>flags</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">void * </td>
- <td class="paramname"> <em>ptr</em> = <code>NULL</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Creates a memory buffer within the context. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>OpenCL flags for the buffer creation </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>Size of the memory buffer in bytes </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>Optional pointer to CPU memory, with which the OpenCL memory should be initialized </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1e038c8113ae2ce29ce49264573aaad3"></a><!-- doxytag: member="viennacl::ocl::context::create_memory" ref="a1e038c8113ae2ce29ce49264573aaad3" args="(cl_mem_flags flags, const VectorType< SCALARTYPE, A > &_buffer)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> create_memory </td>
- <td>(</td>
- <td class="paramtype">cl_mem_flags </td>
- <td class="paramname"> <em>flags</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const VectorType< SCALARTYPE, A > & </td>
- <td class="paramname"> <em>_buffer</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Creates a memory buffer within the context initialized from the supplied data. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>flags</em> </td><td>OpenCL flags for the buffer creation </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>_buffer</em> </td><td>A vector (STL vector, ublas vector, etc.) </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad1be9bca91f95427bc2875827baadab4"></a><!-- doxytag: member="viennacl::ocl::context::current_device" ref="ad1be9bca91f95427bc2875827baadab4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const& current_device </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the current device. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa52e297b2bed0c1bda1d7ca8ecdd0620"></a><!-- doxytag: member="viennacl::ocl::context::default_device_type" ref="aa52e297b2bed0c1bda1d7ca8ecdd0620" args="(cl_device_type dtype)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void default_device_type </td>
- <td>(</td>
- <td class="paramtype">cl_device_type </td>
- <td class="paramname"> <em>dtype</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the device type for this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a721482c91a5042d1457b76addf95ff19"></a><!-- doxytag: member="viennacl::ocl::context::default_device_type" ref="a721482c91a5042d1457b76addf95ff19" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_device_type default_device_type </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the default device type for the context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2921a13758255386f686ba24ebc86140"></a><!-- doxytag: member="viennacl::ocl::context::device_num" ref="a2921a13758255386f686ba24ebc86140" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t device_num </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of devices within this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="acd464974135d4def89834832207da4b9"></a><!-- doxytag: member="viennacl::ocl::context::devices" ref="acd464974135d4def89834832207da4b9" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::vector<<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a>> const& devices </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a vector with all devices in this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9258b6b0121e6f1bebe7b83b9e2a625a"></a><!-- doxytag: member="viennacl::ocl::context::get_program" ref="a9258b6b0121e6f1bebe7b83b9e2a625a" args="(std::string const &name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& get_program </td>
- <td>(</td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>name</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the program with the provided name. </p>
-
-</div>
-</div>
-<a class="anchor" id="a69eae83a60cdc4b1365dca0e7bd93a44"></a><!-- doxytag: member="viennacl::ocl::context::get_program" ref="a69eae83a60cdc4b1365dca0e7bd93a44" args="(size_t id)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& get_program </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>id</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the program with the provided id. </p>
-
-</div>
-</div>
-<a class="anchor" id="a86cc988061d4ef54550a572141ebbee5"></a><!-- doxytag: member="viennacl::ocl::context::get_queue" ref="a86cc988061d4ef54550a572141ebbee5" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& get_queue </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a52653c861c4b28157632901b3b401a93"></a><!-- doxytag: member="viennacl::ocl::context::get_queue" ref="a52653c861c4b28157632901b3b401a93" args="(cl_device_id dev, size_t i=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& get_queue </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>dev</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>i</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the queue with the provided index for the given device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a04a2acfc068529af42d1772382a20b90"></a><!-- doxytag: member="viennacl::ocl::context::handle" ref="a04a2acfc068529af42d1772382a20b90" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_context>& <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the context handle. </p>
-
-</div>
-</div>
-<a class="anchor" id="a02fd73d861ef2e4aabb38c0c9ff82947"></a><!-- doxytag: member="viennacl::ocl::context::init" ref="a02fd73d861ef2e4aabb38c0c9ff82947" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes a new context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a22330fee3e871b4f8467c8952a94597c"></a><!-- doxytag: member="viennacl::ocl::context::init" ref="a22330fee3e871b4f8467c8952a94597c" args="(cl_context c)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void init </td>
- <td>(</td>
- <td class="paramtype">cl_context </td>
- <td class="paramname"> <em>c</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes the context from an existing, user-supplied context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae03a1e8a810ded73e6a457729f02a6fe"></a><!-- doxytag: member="viennacl::ocl::context::operator<" ref="ae03a1e8a810ded73e6a457729f02a6fe" args="(context const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator< </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Less-than comparable for compatibility with std:map. </p>
-
-</div>
-</div>
-<a class="anchor" id="a05252a29e4e6aa036db1e8b784ed28ec"></a><!-- doxytag: member="viennacl::ocl::context::program_num" ref="a05252a29e4e6aa036db1e8b784ed28ec" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t program_num </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of programs within this context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3d316253d55eade417eee44bb38b127c"></a><!-- doxytag: member="viennacl::ocl::context::switch_device" ref="a3d316253d55eade417eee44bb38b127c" args="(viennacl::ocl::device const &d)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void switch_device </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td>
- <td class="paramname"> <em>d</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>If the supplied device is used within the context, it becomes the current active device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9f74ed0d416018dc2825ddc6f4d8101e"></a><!-- doxytag: member="viennacl::ocl::context::switch_device" ref="a9f74ed0d416018dc2825ddc6f4d8101e" args="(size_t i)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void switch_device </td>
- <td>(</td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>i</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Switches the current device to the i-th device in this context. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="context_8hpp_source.html">context.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1device.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1device.html
deleted file mode 100644
index 6b6e172..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1device.html
+++ /dev/null
@@ -1,461 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: device Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>device Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::device" -->
-<p>A class representing a compute device (e.g. a GPU).
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="device_8hpp_source.html">device.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a17858dabba4d274000c38bc42de8487c">device</a> (cl_device_id dev)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a58ac501d01e9cb8eac21a831e8f0874c">device</a> (const <a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">init</a> (cl_device_id dev)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Initializes the class from a given device ID. <a href="#ae2b7499bf82bcd0c28959118a8cd36b6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">double_support</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true if the device supports double precision. <a href="#ab61c1a1216e3f4a8537c6b7bd8a36634"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_device_id </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">id</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL device id. <a href="#ad710a9f9e2cff5a4fe874545102c4c06"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">name</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the device name. <a href="#a37627d5d5bba7f4a8690c71c2ab3cb07"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">driver_version</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the driver version. <a href="#a662b75f96a75aad23ec28c7c55b64d88"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_uint </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">max_compute_units</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of compute units on the device. <a href="#ab2a44bd7f2d691fa15460928af757d99"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">max_workgroup_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum work group size for the device. <a href="#a8c087fde68553db31903df7efd9c033f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_ulong </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">global_memory</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the global memory for the device. <a href="#a3b0090b08cd59decfbc5d27a5865ec88"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_ulong </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">local_memory</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the local memory for the device. <a href="#ae9bd44c2f4e9167a2b839af9f109712c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_ulong </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">max_allocable_memory</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum allocable memory for the device. <a href="#a8d0a43b183ce09a94af13b4d73250280"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">info</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an info string with a few properties of the device. <a href="#a2e1e4e2742b910c44558f9cf8e4add62"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">max_work_group_size</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_uint </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">compute_units</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_device_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">type</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">operator==</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html#a06e1d466be32d6b0072a8a8e23b339f9">operator==</a> (cl_device_id other) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A class representing a compute device (e.g. a GPU). </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aa6214b6ab6f2d943669af7dd76cef3a2"></a><!-- doxytag: member="viennacl::ocl::device::device" ref="aa6214b6ab6f2d943669af7dd76cef3a2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a17858dabba4d274000c38bc42de8487c"></a><!-- doxytag: member="viennacl::ocl::device::device" ref="a17858dabba4d274000c38bc42de8487c" args="(cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>dev</em></td>
- <td> ) </td>
- <td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a58ac501d01e9cb8eac21a831e8f0874c"></a><!-- doxytag: member="viennacl::ocl::device::device" ref="a58ac501d01e9cb8eac21a831e8f0874c" args="(const device &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae641ec7369f4552b2d0bfcdd62ce9204"></a><!-- doxytag: member="viennacl::ocl::device::compute_units" ref="ae641ec7369f4552b2d0bfcdd62ce9204" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_uint compute_units </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab61c1a1216e3f4a8537c6b7bd8a36634"></a><!-- doxytag: member="viennacl::ocl::device::double_support" ref="ab61c1a1216e3f4a8537c6b7bd8a36634" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool double_support </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns true if the device supports double precision. </p>
-
-</div>
-</div>
-<a class="anchor" id="a36eb84a793487af78b6a620b418efb6a"></a><!-- doxytag: member="viennacl::ocl::device::double_support_extension" ref="a36eb84a793487af78b6a620b418efb6a" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string double_support_extension </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a662b75f96a75aad23ec28c7c55b64d88"></a><!-- doxytag: member="viennacl::ocl::device::driver_version" ref="a662b75f96a75aad23ec28c7c55b64d88" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string driver_version </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the driver version. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3b0090b08cd59decfbc5d27a5865ec88"></a><!-- doxytag: member="viennacl::ocl::device::global_memory" ref="a3b0090b08cd59decfbc5d27a5865ec88" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_ulong global_memory </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the global memory for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad710a9f9e2cff5a4fe874545102c4c06"></a><!-- doxytag: member="viennacl::ocl::device::id" ref="ad710a9f9e2cff5a4fe874545102c4c06" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_device_id id </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL device id. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2e1e4e2742b910c44558f9cf8e4add62"></a><!-- doxytag: member="viennacl::ocl::device::info" ref="a2e1e4e2742b910c44558f9cf8e4add62" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string info </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an info string with a few properties of the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae2b7499bf82bcd0c28959118a8cd36b6"></a><!-- doxytag: member="viennacl::ocl::device::init" ref="ae2b7499bf82bcd0c28959118a8cd36b6" args="(cl_device_id dev)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void init </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>dev</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Initializes the class from a given device ID. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae9bd44c2f4e9167a2b839af9f109712c"></a><!-- doxytag: member="viennacl::ocl::device::local_memory" ref="ae9bd44c2f4e9167a2b839af9f109712c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_ulong local_memory </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the local memory for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8d0a43b183ce09a94af13b4d73250280"></a><!-- doxytag: member="viennacl::ocl::device::max_allocable_memory" ref="a8d0a43b183ce09a94af13b4d73250280" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_ulong max_allocable_memory </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum allocable memory for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab2a44bd7f2d691fa15460928af757d99"></a><!-- doxytag: member="viennacl::ocl::device::max_compute_units" ref="ab2a44bd7f2d691fa15460928af757d99" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_uint max_compute_units </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the number of compute units on the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a49dafae1d5a718f0825eefd245b14683"></a><!-- doxytag: member="viennacl::ocl::device::max_work_group_size" ref="a49dafae1d5a718f0825eefd245b14683" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t max_work_group_size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8c087fde68553db31903df7efd9c033f"></a><!-- doxytag: member="viennacl::ocl::device::max_workgroup_size" ref="a8c087fde68553db31903df7efd9c033f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t max_workgroup_size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum work group size for the device. </p>
-
-</div>
-</div>
-<a class="anchor" id="a37627d5d5bba7f4a8690c71c2ab3cb07"></a><!-- doxytag: member="viennacl::ocl::device::name" ref="a37627d5d5bba7f4a8690c71c2ab3cb07" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the device name. </p>
-
-</div>
-</div>
-<a class="anchor" id="a06e1d466be32d6b0072a8a8e23b339f9"></a><!-- doxytag: member="viennacl::ocl::device::operator==" ref="a06e1d466be32d6b0072a8a8e23b339f9" args="(cl_device_id other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator== </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a42bb548ced469dc5714f1816603a4d35"></a><!-- doxytag: member="viennacl::ocl::device::operator==" ref="a42bb548ced469dc5714f1816603a4d35" args="(device const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator== </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a30cb8b6361720dfb6c7ce63d1c347e41"></a><!-- doxytag: member="viennacl::ocl::device::type" ref="a30cb8b6361720dfb6c7ce63d1c347e41" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_device_type type </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="device_8hpp_source.html">device.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__available.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__available.html
deleted file mode 100644
index 682a8ed..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__available.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: device_not_available Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>device_not_available Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::device_not_available" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__found.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__found.html
deleted file mode 100644
index 0cba7bf..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1device__not__found.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: device_not_found Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>device_not_found Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::device_not_found" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1double__precision__not__provided__error.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1double__precision__not__provided__error.html
deleted file mode 100644
index bb29ca6..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1double__precision__not__provided__error.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: double_precision_not_provided_error Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>double_precision_not_provided_error Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::double_precision_not_provided_error" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1handle.html
deleted file mode 100644
index 6c21cb8..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle.html
+++ /dev/null
@@ -1,260 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle< OCL_TYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>handle< OCL_TYPE > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle" -->
-<p>Handle class the effectively represents a smart pointer for OpenCL handles.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle</a> (const OCL_TYPE &_something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle</a> (const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> &h)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">~handle</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">operator=</a> (const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> &h)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">operator=</a> (const OCL_TYPE &_something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">operator OCL_TYPE</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">swap</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the OpenCL handle of two handle objects. <a href="#aca2a2fe50e9519f31c07e34d56a2a5eb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">inc</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Manually increment the OpenCL reference count. Typically called automatically, but is necessary if user-supplied memory objects are wrapped. <a href="#a40b09187c94d100512d5e49b1d2fd9bd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">dec</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Manually decrement the OpenCL reference count. Typically called automatically, but might be useful with user-supplied memory objects. <a href="#a15ca0b744f48a3d5e7cf7151f81b587a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class OCL_TYPE><br/>
- class viennacl::ocl::handle< OCL_TYPE ></h3>
-
-<p>Handle class the effectively represents a smart pointer for OpenCL handles. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a66eb7514ea7f7f8a5738a180b14e9b48"></a><!-- doxytag: member="viennacl::ocl::handle::handle" ref="a66eb7514ea7f7f8a5738a180b14e9b48" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af4d4001df29df561a0c46de3a8b87566"></a><!-- doxytag: member="viennacl::ocl::handle::handle" ref="af4d4001df29df561a0c46de3a8b87566" args="(const OCL_TYPE &_something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
- <td>(</td>
- <td class="paramtype">const OCL_TYPE & </td>
- <td class="paramname"> <em>_something</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0221469d9ed43a30b1663b0cd63ffc9d"></a><!-- doxytag: member="viennacl::ocl::handle::handle" ref="a0221469d9ed43a30b1663b0cd63ffc9d" args="(const handle &h)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>< OCL_TYPE > & </td>
- <td class="paramname"> <em>h</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acf40b88db4c738c2b2a7f791cf978414"></a><!-- doxytag: member="viennacl::ocl::handle::~handle" ref="acf40b88db4c738c2b2a7f791cf978414" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">~<a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a15ca0b744f48a3d5e7cf7151f81b587a"></a><!-- doxytag: member="viennacl::ocl::handle::dec" ref="a15ca0b744f48a3d5e7cf7151f81b587a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void dec </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Manually decrement the OpenCL reference count. Typically called automatically, but might be useful with user-supplied memory objects. </p>
-
-</div>
-</div>
-<a class="anchor" id="a40b09187c94d100512d5e49b1d2fd9bd"></a><!-- doxytag: member="viennacl::ocl::handle::inc" ref="a40b09187c94d100512d5e49b1d2fd9bd" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void inc </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Manually increment the OpenCL reference count. Typically called automatically, but is necessary if user-supplied memory objects are wrapped. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0617dee4fea8b9ca2a668b73b6814a52"></a><!-- doxytag: member="viennacl::ocl::handle::operator OCL_TYPE" ref="a0617dee4fea8b9ca2a668b73b6814a52" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">operator OCL_TYPE </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afe71aac8199101eb7e5f83a8a08e196b"></a><!-- doxytag: member="viennacl::ocl::handle::operator=" ref="afe71aac8199101eb7e5f83a8a08e196b" args="(const OCL_TYPE &_something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>& operator= </td>
- <td>(</td>
- <td class="paramtype">const OCL_TYPE & </td>
- <td class="paramname"> <em>_something</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac8c16c2f06f9b8407963c8d5b627cd44"></a><!-- doxytag: member="viennacl::ocl::handle::operator=" ref="ac8c16c2f06f9b8407963c8d5b627cd44" args="(const handle &h)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>< OCL_TYPE > & </td>
- <td class="paramname"> <em>h</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aca2a2fe50e9519f31c07e34d56a2a5eb"></a><!-- doxytag: member="viennacl::ocl::handle::swap" ref="aca2a2fe50e9519f31c07e34d56a2a5eb" args="(handle &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>& swap </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a>< OCL_TYPE > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the OpenCL handle of two handle objects. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle__inc__dec__helper.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1handle__inc__dec__helper.html
deleted file mode 100644
index 6ed9046..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1handle__inc__dec__helper.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< OCL_TYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>handle_inc_dec_helper< OCL_TYPE > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper" -->
-<p>Helper for OpenCL reference counting used by class handle.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class OCL_TYPE><br/>
- class viennacl::ocl::handle_inc_dec_helper< OCL_TYPE ></h3>
-
-<p>Helper for OpenCL reference counting used by class handle. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>OCL_TYPE</em> </td><td>Must be one out of cl_mem, cl_program, cl_kernel, cl_command_queue and cl_context, otherwise a compile time error is thrown. </td></tr>
- </table>
- </dd>
-</dl>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__mismatch.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__mismatch.html
deleted file mode 100644
index 22f4152..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__mismatch.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: image_format_mismatch Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>image_format_mismatch Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::image_format_mismatch" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__not__supported.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__not__supported.html
deleted file mode 100644
index ad23fb1..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1image__format__not__supported.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: image_format_not_supported Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>image_format_not_supported Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::image_format_not_supported" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__index.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__index.html
deleted file mode 100644
index 9c0b8ef..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__index.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_arg_index Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_arg_index Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_arg_index" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__size.html
deleted file mode 100644
index fb35f6b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_arg_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_arg_size Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_arg_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__value.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__value.html
deleted file mode 100644
index 30cbed0..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__arg__value.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_arg_value Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_arg_value Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_arg_value" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__binary.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__binary.html
deleted file mode 100644
index 2b12505..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__binary.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_binary Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_binary Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_binary" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__buffer__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__buffer__size.html
deleted file mode 100644
index e4d9147..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__buffer__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_buffer_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_buffer_size Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_buffer_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__build__options.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__build__options.html
deleted file mode 100644
index 49f2704..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__build__options.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_build_options Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_build_options Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_build_options" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__command__queue.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__command__queue.html
deleted file mode 100644
index facdd78..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__command__queue.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_command_queue Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_command_queue Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_command_queue" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__context.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__context.html
deleted file mode 100644
index d0382ef..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__context.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_context Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_context Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_context" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device.html
deleted file mode 100644
index 71b6a79..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_device Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_device Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_device" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device__type.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device__type.html
deleted file mode 100644
index a6b68d7..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__device__type.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_device_type Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_device_type Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_device_type" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event.html
deleted file mode 100644
index 339c599..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_event Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_event Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_event" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event__wait__list.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event__wait__list.html
deleted file mode 100644
index eb1d2dd..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__event__wait__list.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_event_wait_list Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_event_wait_list Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_event_wait_list" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__gl__object.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__gl__object.html
deleted file mode 100644
index 003cd00..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__gl__object.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_gl_object Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_gl_object Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_gl_object" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__offset.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__offset.html
deleted file mode 100644
index 3962ea6..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__offset.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_global_offset Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_global_offset Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_global_offset" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__work__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__work__size.html
deleted file mode 100644
index 96784de..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__global__work__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_global_work_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_global_work_size Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_global_work_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__host__ptr.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__host__ptr.html
deleted file mode 100644
index a5e2f6b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__host__ptr.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_host_ptr Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_host_ptr Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_host_ptr" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html
deleted file mode 100644
index 03cc808..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_image_format_descriptor Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_image_format_descriptor Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_image_format_descriptor" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__size.html
deleted file mode 100644
index 510f7b3..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__image__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_image_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_image_size Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_image_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel.html
deleted file mode 100644
index a36bc4c..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_kernel Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__args.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__args.html
deleted file mode 100644
index d9f6731..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__args.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel_args Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_kernel_args Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel_args" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__definition.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__definition.html
deleted file mode 100644
index 99f9e06..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__definition.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel_definition Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_kernel_definition Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel_definition" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__name.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__name.html
deleted file mode 100644
index f51866b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__kernel__name.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_kernel_name Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_kernel_name Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_kernel_name" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mem__object.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mem__object.html
deleted file mode 100644
index 773b1de..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mem__object.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_mem_object Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_mem_object Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_mem_object" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mip__level.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mip__level.html
deleted file mode 100644
index 15219d1..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__mip__level.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_mip_level Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_mip_level Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_mip_level" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__operation.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__operation.html
deleted file mode 100644
index d9af94c..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__operation.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_operation Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_operation Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_operation" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__platform.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__platform.html
deleted file mode 100644
index b0af047..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__platform.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_platform Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_platform Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_platform" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program.html
deleted file mode 100644
index d3822c4..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_program Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_program Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_program" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program__executable.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program__executable.html
deleted file mode 100644
index ef18108..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__program__executable.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_program_executable Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_program_executable Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_program_executable" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__property.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__property.html
deleted file mode 100644
index 11067d6..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__property.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_property Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_property Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_property" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__queue__properties.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__queue__properties.html
deleted file mode 100644
index b9f81c1..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__queue__properties.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_queue_properties Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_queue_properties Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_queue_properties" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__sampler.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__sampler.html
deleted file mode 100644
index 4b0a2a9..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__sampler.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_sampler Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_sampler Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_sampler" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__value.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__value.html
deleted file mode 100644
index c17a9ed..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__value.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_value Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_value Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_value" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__dimension.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__dimension.html
deleted file mode 100644
index 07614f3..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__dimension.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_work_dimension Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_work_dimension Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_work_dimension" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__group__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__group__size.html
deleted file mode 100644
index 00246b7..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__group__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_work_group_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_work_group_size Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_work_group_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__item__size.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__item__size.html
deleted file mode 100644
index f61e574..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1invalid__work__item__size.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: invalid_work_item_size Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>invalid_work_item_size Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::invalid_work_item_size" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1kernel.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1kernel.html
deleted file mode 100644
index 4eefb25..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1kernel.html
+++ /dev/null
@@ -1,1776 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: kernel Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> </div>
- <div class="headertitle">
-<h1>kernel Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::kernel" -->
-<p>Represents an OpenCL kernel within ViennaCL.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel_8hpp_source.html">kernel.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aa94d7fe68805226e64d2b3b787f4a22c">kernel</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const &prog, std::string const &name)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a8f86f09c238ce42f8659fb979ff760d4">kernel</a> (<a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">operator=</a> (const <a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">arg</a> (unsigned int pos, cl_uint val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an unsigned integer argument at the provided position. <a href="#ae9941fe07b41500ced66b15c3b829ee4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ac351d86fb389dfefbeae8d04db8b0152">arg</a> (unsigned int pos, float val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a single precision floating point argument at the provided position. <a href="#ac351d86fb389dfefbeae8d04db8b0152"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a1f56b7116c68148a7e86755b24313505">arg</a> (unsigned int pos, double val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets a double precision floating point argument at the provided position. <a href="#a1f56b7116c68148a7e86755b24313505"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class VCL_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a90696210593c8b051b5a6b37db5bd1a9">arg</a> (unsigned int pos, VCL_TYPE const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an OpenCL memory object at the provided position. <a href="#a90696210593c8b051b5a6b37db5bd1a9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class CL_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a5aeba814c640a29582cb4ae3ee769292">arg</a> (unsigned int pos, <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< CL_TYPE > const &h)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an OpenCL object at the provided position. <a href="#a5aeba814c640a29582cb4ae3ee769292"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aa786f8f9956c7e96f51870757e223511">arg</a> (unsigned int pos, const <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> &mem)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets an OpenCL local memory object at the provided position. <a href="#aa786f8f9956c7e96f51870757e223511"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e">operator()</a> (T0 const &t0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting one kernel parameter. <a href="#a113a2629c9614e64ce525143422de15e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae34b738195a646694d04164a4197ab9a">operator()</a> (T0 const &t0, T1 const &t1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting two kernel parameter. <a href="#ae34b738195a646694d04164a4197ab9a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aaa45f3bb4fdbd76ed38194c5519db49c">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting three kernel parameter. <a href="#aaa45f3bb4fdbd76ed38194c5519db49c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting four kernel parameter. <a href="#a60905cb2b6bc0d97fbab6f92cac9b018"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting five kernel parameter. <a href="#a17608b63381196929a0b6a2cb5de5422"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ad58fe9599d149db3ae8aba9237069438">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting six kernel parameter. <a href="#ad58fe9599d149db3ae8aba9237069438"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a8be19d50cd6d9ed66bf2b89a4166ee67">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting seven kernel parameter. <a href="#a8be19d50cd6d9ed66bf2b89a4166ee67"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting eight kernel parameter. <a href="#a77fdda461fb386657622e1946b5dce51"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a7fd3a21c0e6a24ed15cb7450be4282a3">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting nine kernel parameter. <a href="#a7fd3a21c0e6a24ed15cb7450be4282a3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting ten kernel parameter. <a href="#a919003007befe589d506987dcd582f1b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a9b68e0eccb978b1f7ced31b5da87d261">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting eleven kernel parameter. <a href="#a9b68e0eccb978b1f7ced31b5da87d261"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting twelve kernel parameter. <a href="#af0e290a2eba1f9bf7c0a6bed69915487"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a61fe96ea3962a5b653b653cd0fb40418">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting thirteen kernel parameter. <a href="#a61fe96ea3962a5b653b653cd0fb40418"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ace68dfdccfd9c93c87346e160f74739c">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting fourteen kernel parameter. <a href="#ace68dfdccfd9c93c87346e160f74739c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ac3b17a7168f092a0839a5d2cbb9210e6">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting fifteen kernel parameter. <a href="#ac3b17a7168f092a0839a5d2cbb9210e6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aec21f3c9f68d5d81dacd7ec8a19048ab">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting sixteen kernel parameter. <a href="#aec21f3c9f68d5d81dacd7ec8a19048ab"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a37e62106dc02656ef6602ddc6c28feb9">operator()</a> (T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15, T16 const &t16)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting seventeen kernel parameter. <a href="#a37e62106dc02656ef6602ddc6c28feb9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9">local_work_size</a> (int index=0) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the local work size at the respective dimension. <a href="#a42348d9e5c486ceb3001ddf6dcbe51b9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">global_work_size</a> (int index=0) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the global work size at the respective dimension. <a href="#a710fa875ddd200587a615a54e56ac456"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af38f6ba2df03771a43aacc275b64fc1c">local_work_size</a> (int index, size_t s)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the local work size at the respective dimension. <a href="#af38f6ba2df03771a43aacc275b64fc1c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#adcacd23410973277cfb37fc98c93ebec">global_work_size</a> (int index, size_t s)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the global work size at the respective dimension. <a href="#adcacd23410973277cfb37fc98c93ebec"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">name</a> () const </td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue. <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Represents an OpenCL kernel within ViennaCL. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aba1fe4cfaebf9576484944be905ea7de"></a><!-- doxytag: member="viennacl::ocl::kernel::kernel" ref="aba1fe4cfaebf9576484944be905ea7de" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa94d7fe68805226e64d2b3b787f4a22c"></a><!-- doxytag: member="viennacl::ocl::kernel::kernel" ref="aa94d7fe68805226e64d2b3b787f4a22c" args="(viennacl::ocl::handle< cl_program > const &prog, std::string const &name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const & </td>
- <td class="paramname"> <em>prog</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>name</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8f86f09c238ce42f8659fb979ff760d4"></a><!-- doxytag: member="viennacl::ocl::kernel::kernel" ref="a8f86f09c238ce42f8659fb979ff760d4" args="(kernel const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae9941fe07b41500ced66b15c3b829ee4"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="ae9941fe07b41500ced66b15c3b829ee4" args="(unsigned int pos, cl_uint val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void arg </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_uint </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an unsigned integer argument at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1f56b7116c68148a7e86755b24313505"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="a1f56b7116c68148a7e86755b24313505" args="(unsigned int pos, double val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void arg </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets a double precision floating point argument at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a90696210593c8b051b5a6b37db5bd1a9"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="a90696210593c8b051b5a6b37db5bd1a9" args="(unsigned int pos, VCL_TYPE const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void arg </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VCL_TYPE const & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an OpenCL memory object at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac351d86fb389dfefbeae8d04db8b0152"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="ac351d86fb389dfefbeae8d04db8b0152" args="(unsigned int pos, float val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void arg </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">float </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets a single precision floating point argument at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5aeba814c640a29582cb4ae3ee769292"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="a5aeba814c640a29582cb4ae3ee769292" args="(unsigned int pos, viennacl::ocl::handle< CL_TYPE > const &h)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void arg </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< CL_TYPE > const & </td>
- <td class="paramname"> <em>h</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an OpenCL object at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa786f8f9956c7e96f51870757e223511"></a><!-- doxytag: member="viennacl::ocl::kernel::arg" ref="aa786f8f9956c7e96f51870757e223511" args="(unsigned int pos, const local_mem &mem)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void arg </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>pos</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> & </td>
- <td class="paramname"> <em>mem</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets an OpenCL local memory object at the provided position. </p>
-
-</div>
-</div>
-<a class="anchor" id="a710fa875ddd200587a615a54e56ac456"></a><!-- doxytag: member="viennacl::ocl::kernel::global_work_size" ref="a710fa875ddd200587a615a54e56ac456" args="(int index=0) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t global_work_size </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>index</em> = <code>0</code></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the global work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="adcacd23410973277cfb37fc98c93ebec"></a><!-- doxytag: member="viennacl::ocl::kernel::global_work_size" ref="adcacd23410973277cfb37fc98c93ebec" args="(int index, size_t s)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void global_work_size </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>s</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the global work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>The new global work size </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a42348d9e5c486ceb3001ddf6dcbe51b9"></a><!-- doxytag: member="viennacl::ocl::kernel::local_work_size" ref="a42348d9e5c486ceb3001ddf6dcbe51b9" args="(int index=0) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t local_work_size </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>index</em> = <code>0</code></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the local work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af38f6ba2df03771a43aacc275b64fc1c"></a><!-- doxytag: member="viennacl::ocl::kernel::local_work_size" ref="af38f6ba2df03771a43aacc275b64fc1c" args="(int index, size_t s)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void local_work_size </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>index</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>s</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the local work size at the respective dimension. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>Dimension index (currently either 0 or 1) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>The new local work size </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a836b9d82daf374fab15aac8c87eb1133"></a><!-- doxytag: member="viennacl::ocl::kernel::name" ref="a836b9d82daf374fab15aac8c87eb1133" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string const& name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af0e290a2eba1f9bf7c0a6bed69915487"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="af0e290a2eba1f9bf7c0a6bed69915487" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T10 const & </td>
- <td class="paramname"> <em>t10</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T11 const & </td>
- <td class="paramname"> <em>t11</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting twelve kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9b68e0eccb978b1f7ced31b5da87d261"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a9b68e0eccb978b1f7ced31b5da87d261" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T10 const & </td>
- <td class="paramname"> <em>t10</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting eleven kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a919003007befe589d506987dcd582f1b"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a919003007befe589d506987dcd582f1b" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting ten kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a61fe96ea3962a5b653b653cd0fb40418"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a61fe96ea3962a5b653b653cd0fb40418" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T10 const & </td>
- <td class="paramname"> <em>t10</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T11 const & </td>
- <td class="paramname"> <em>t11</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T12 const & </td>
- <td class="paramname"> <em>t12</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting thirteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a77fdda461fb386657622e1946b5dce51"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a77fdda461fb386657622e1946b5dce51" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting eight kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad58fe9599d149db3ae8aba9237069438"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ad58fe9599d149db3ae8aba9237069438" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting six kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="aec21f3c9f68d5d81dacd7ec8a19048ab"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="aec21f3c9f68d5d81dacd7ec8a19048ab" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T10 const & </td>
- <td class="paramname"> <em>t10</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T11 const & </td>
- <td class="paramname"> <em>t11</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T12 const & </td>
- <td class="paramname"> <em>t12</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T13 const & </td>
- <td class="paramname"> <em>t13</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T14 const & </td>
- <td class="paramname"> <em>t14</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T15 const & </td>
- <td class="paramname"> <em>t15</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting sixteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a17608b63381196929a0b6a2cb5de5422"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a17608b63381196929a0b6a2cb5de5422" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting five kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a60905cb2b6bc0d97fbab6f92cac9b018"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a60905cb2b6bc0d97fbab6f92cac9b018" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting four kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="aaa45f3bb4fdbd76ed38194c5519db49c"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="aaa45f3bb4fdbd76ed38194c5519db49c" args="(T0 const &t0, T1 const &t1, T2 const &t2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting three kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae34b738195a646694d04164a4197ab9a"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ae34b738195a646694d04164a4197ab9a" args="(T0 const &t0, T1 const &t1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting two kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a113a2629c9614e64ce525143422de15e"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a113a2629c9614e64ce525143422de15e" args="(T0 const &t0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting one kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a37e62106dc02656ef6602ddc6c28feb9"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a37e62106dc02656ef6602ddc6c28feb9" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14, T15 const &t15, T16 const &t16)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T10 const & </td>
- <td class="paramname"> <em>t10</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T11 const & </td>
- <td class="paramname"> <em>t11</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T12 const & </td>
- <td class="paramname"> <em>t12</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T13 const & </td>
- <td class="paramname"> <em>t13</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T14 const & </td>
- <td class="paramname"> <em>t14</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T15 const & </td>
- <td class="paramname"> <em>t15</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T16 const & </td>
- <td class="paramname"> <em>t16</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting seventeen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac3b17a7168f092a0839a5d2cbb9210e6"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ac3b17a7168f092a0839a5d2cbb9210e6" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13, T14 const &t14)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T10 const & </td>
- <td class="paramname"> <em>t10</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T11 const & </td>
- <td class="paramname"> <em>t11</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T12 const & </td>
- <td class="paramname"> <em>t12</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T13 const & </td>
- <td class="paramname"> <em>t13</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T14 const & </td>
- <td class="paramname"> <em>t14</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting fifteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8be19d50cd6d9ed66bf2b89a4166ee67"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a8be19d50cd6d9ed66bf2b89a4166ee67" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting seven kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7fd3a21c0e6a24ed15cb7450be4282a3"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="a7fd3a21c0e6a24ed15cb7450be4282a3" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting nine kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="ace68dfdccfd9c93c87346e160f74739c"></a><!-- doxytag: member="viennacl::ocl::kernel::operator()" ref="ace68dfdccfd9c93c87346e160f74739c" args="(T0 const &t0, T1 const &t1, T2 const &t2, T3 const &t3, T4 const &t4, T5 const &t5, T6 const &t6, T7 const &t7, T8 const &t8, T9 const &t9, T10 const &t10, T11 const &t11, T12 const &t12, T13 const &t13)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a>& operator() </td>
- <td>(</td>
- <td class="paramtype">T0 const & </td>
- <td class="paramname"> <em>t0</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T1 const & </td>
- <td class="paramname"> <em>t1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T2 const & </td>
- <td class="paramname"> <em>t2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T3 const & </td>
- <td class="paramname"> <em>t3</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T4 const & </td>
- <td class="paramname"> <em>t4</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T5 const & </td>
- <td class="paramname"> <em>t5</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T6 const & </td>
- <td class="paramname"> <em>t6</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T7 const & </td>
- <td class="paramname"> <em>t7</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T8 const & </td>
- <td class="paramname"> <em>t8</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T9 const & </td>
- <td class="paramname"> <em>t9</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T10 const & </td>
- <td class="paramname"> <em>t10</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T11 const & </td>
- <td class="paramname"> <em>t11</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T12 const & </td>
- <td class="paramname"> <em>t12</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">T13 const & </td>
- <td class="paramname"> <em>t13</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting fourteen kernel parameter. </p>
-
-</div>
-</div>
-<a class="anchor" id="a83a54825c25a4ec0cbe40577a24beb6c"></a><!-- doxytag: member="viennacl::ocl::kernel::operator=" ref="a83a54825c25a4ec0cbe40577a24beb6c" args="(const kernel &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a> & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="a46527eb5023de820b1f1c16ec5a11084"></a><!-- doxytag: member="viennacl::ocl::kernel::enqueue" ref="a46527eb5023de820b1f1c16ec5a11084" args="(KernelType &k, viennacl::ocl::command_queue const &queue)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void enqueue </td>
- <td>(</td>
- <td class="paramtype">KernelType & </td>
- <td class="paramname"> <em>k</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const & </td>
- <td class="paramname"> <em>queue</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [friend]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Enqueues a kernel in the provided queue. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="kernel_8hpp_source.html">kernel.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1local__mem.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1local__mem.html
deleted file mode 100644
index 00f8a92..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1local__mem.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: local_mem Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>local_mem Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::local_mem" -->
-<p>A class representing local (shared) OpenCL memory. Typically used as kernel argument.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="local__mem_8hpp_source.html">local_mem.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a> (unsigned int s)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns size in bytes. <a href="#a90ca964ebcc1b02bbcde225edd49e812"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da">size</a> (unsigned int s)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the size of the local memory in bytes. <a href="#a262aef9302860b3cb5f8fc4bee1531da"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A class representing local (shared) OpenCL memory. Typically used as kernel argument. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a33c50a9e8dcc7fbeeda4b6cadc0e7d53"></a><!-- doxytag: member="viennacl::ocl::local_mem::local_mem" ref="a33c50a9e8dcc7fbeeda4b6cadc0e7d53" args="(unsigned int s)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a> </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>s</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a90ca964ebcc1b02bbcde225edd49e812"></a><!-- doxytag: member="viennacl::ocl::local_mem::size" ref="a90ca964ebcc1b02bbcde225edd49e812" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns size in bytes. </p>
-
-</div>
-</div>
-<a class="anchor" id="a262aef9302860b3cb5f8fc4bee1531da"></a><!-- doxytag: member="viennacl::ocl::local_mem::size" ref="a262aef9302860b3cb5f8fc4bee1531da" args="(unsigned int s)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void size </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>s</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the size of the local memory in bytes. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="local__mem_8hpp_source.html">local_mem.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1map__failure.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1map__failure.html
deleted file mode 100644
index 73d8667..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1map__failure.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: map_failure Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>map_failure Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::map_failure" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__copy__overlap.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__copy__overlap.html
deleted file mode 100644
index 9753e61..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__copy__overlap.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: mem_copy_overlap Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>mem_copy_overlap Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::mem_copy_overlap" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__object__allocation__failure.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__object__allocation__failure.html
deleted file mode 100644
index a8f09ee..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1mem__object__allocation__failure.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: mem_object_allocation_failure Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>mem_object_allocation_failure Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::mem_object_allocation_failure" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__host__memory.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__host__memory.html
deleted file mode 100644
index 75abf9b..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__host__memory.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: out_of_host_memory Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>out_of_host_memory Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::out_of_host_memory" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__resources.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__resources.html
deleted file mode 100644
index 351ed5f..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1out__of__resources.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: out_of_resources Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>out_of_resources Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::out_of_resources" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1platform.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1platform.html
deleted file mode 100644
index 07b0826..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1platform.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: platform Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>platform Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::platform" -->
-<p><code>#include <<a class="el" href="platform_8hpp_source.html">platform.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">cl_platform_id </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">id</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">info</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an information string. <a href="#a2e1e4e2742b910c44558f9cf8e4add62"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::vector< <a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">devices</a> (cl_device_type dtype=CL_DEVICE_TYPE_DEFAULT)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the available devices of the supplied device type. <a href="#a257844d23a69f95c6a6572631ffa5995"></a><br/></td></tr>
-</table>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ad69bddb2ba31b27415484b3da4213ba8"></a><!-- doxytag: member="viennacl::ocl::platform::platform" ref="ad69bddb2ba31b27415484b3da4213ba8" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a257844d23a69f95c6a6572631ffa5995"></a><!-- doxytag: member="viennacl::ocl::platform::devices" ref="a257844d23a69f95c6a6572631ffa5995" args="(cl_device_type dtype=CL_DEVICE_TYPE_DEFAULT)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::vector<<a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a>> devices </td>
- <td>(</td>
- <td class="paramtype">cl_device_type </td>
- <td class="paramname"> <em>dtype</em> = <code>CL_DEVICE_TYPE_DEFAULT</code></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the available devices of the supplied device type. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab35e9ce3172db05c073d481fce1e26c4"></a><!-- doxytag: member="viennacl::ocl::platform::id" ref="ab35e9ce3172db05c073d481fce1e26c4" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_platform_id id </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2e1e4e2742b910c44558f9cf8e4add62"></a><!-- doxytag: member="viennacl::ocl::platform::info" ref="a2e1e4e2742b910c44558f9cf8e4add62" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string info </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an information string. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="platform_8hpp_source.html">platform.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1profiling__info__not__available.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1profiling__info__not__available.html
deleted file mode 100644
index 62c136c..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1profiling__info__not__available.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: profiling_info_not_available Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>profiling_info_not_available Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::profiling_info_not_available" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1program.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1program.html
deleted file mode 100644
index 36f4ebd..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1program.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#friends">Friends</a> </div>
- <div class="headertitle">
-<h1>program Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::program" -->
-<p><code>#include <<a class="el" href="program_8hpp_source.html">program.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">program</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const &h, std::string const &prog_name=std::string())</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a454539d49698f09affc0a399289e2611">program</a> (<a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">operator=</a> (const <a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string const & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">name</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">add_kernel</a> (std::string const &kernel_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a kernel to the program. <a href="#a17bee920a38ba6e5158f5c807f88fd92"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">get_kernel</a> (std::string const &name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the kernel with the provided name. <a href="#a593fbca8c511a382654582513faf24fb"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="friends"></a>
-Friends</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">kernel</a></td></tr>
-</table>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ac22da204c9d1580d094bc37b41ee6a5a"></a><!-- doxytag: member="viennacl::ocl::program::program" ref="ac22da204c9d1580d094bc37b41ee6a5a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a396823275fb41e9a64fff458b6b4415d"></a><!-- doxytag: member="viennacl::ocl::program::program" ref="a396823275fb41e9a64fff458b6b4415d" args="(viennacl::ocl::handle< cl_program > const &h, std::string const &prog_name=std::string())" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_program > const & </td>
- <td class="paramname"> <em>h</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>prog_name</em> = <code>std::string()</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a454539d49698f09affc0a399289e2611"></a><!-- doxytag: member="viennacl::ocl::program::program" ref="a454539d49698f09affc0a399289e2611" args="(program const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a17bee920a38ba6e5158f5c807f88fd92"></a><!-- doxytag: member="viennacl::ocl::program::add_kernel" ref="a17bee920a38ba6e5158f5c807f88fd92" args="(std::string const &kernel_name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& add_kernel </td>
- <td>(</td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>kernel_name</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a kernel to the program. </p>
-
-</div>
-</div>
-<a class="anchor" id="a593fbca8c511a382654582513faf24fb"></a><!-- doxytag: member="viennacl::ocl::program::get_kernel" ref="a593fbca8c511a382654582513faf24fb" args="(std::string const &name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& get_kernel </td>
- <td>(</td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>name</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the kernel with the provided name. </p>
-
-</div>
-</div>
-<a class="anchor" id="a836b9d82daf374fab15aac8c87eb1133"></a><!-- doxytag: member="viennacl::ocl::program::name" ref="a836b9d82daf374fab15aac8c87eb1133" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string const& name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab38d1becd4cb60e89dd0b11f3f4e3fe4"></a><!-- doxytag: member="viennacl::ocl::program::operator=" ref="ab38d1becd4cb60e89dd0b11f3f4e3fe4" args="(const program &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a> & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Friends And Related Function Documentation</h2>
-<a class="anchor" id="aaae51189d6e1e8b24b5654e3704ff50b"></a><!-- doxytag: member="viennacl::ocl::program::kernel" ref="aaae51189d6e1e8b24b5654e3704ff50b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">friend class <a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a><code> [friend]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="program_8hpp_source.html">program.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1ocl_1_1unknown__error.html b/doc/doxygen/html/classviennacl_1_1ocl_1_1unknown__error.html
deleted file mode 100644
index 72c0f40..0000000
--- a/doc/doxygen/html/classviennacl_1_1ocl_1_1unknown__error.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: unknown_error Class Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>unknown_error Class Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::unknown_error" -->
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1scalar.html b/doc/doxygen/html/classviennacl_1_1scalar.html
deleted file mode 100644
index d218eff..0000000
--- a/doc/doxygen/html/classviennacl_1_1scalar.html
+++ /dev/null
@@ -1,958 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar< TYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>scalar< TYPE > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::scalar" -->
-<p>This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< TYPE >::ResultType </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">value_type</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the underlying host scalar type. <a href="#a46dcdd29c175f21b173b96ae4dd0a46e"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">scalar</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates the memory for the scalar, but does not set it to zero. <a href="#a79453d11d5d0a0ab021762a68a73d97e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#ab491583d840a0f494f5b6cf505defa7f">scalar</a> (TYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates the memory for the scalar and sets it to the supplied value. <a href="#ab491583d840a0f494f5b6cf505defa7f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a577ea3a750a7975b2a5c256f94081b1c">scalar</a> (cl_mem mem, size_t size)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Wraps an existing memory entry into a scalar. <a href="#a577ea3a750a7975b2a5c256f94081b1c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a1c6a89a7d2a7e6744f1b92d8466e0c56">scalar</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates memory for the scalar and sets it to the result of supplied expression. <a href="#a1c6a89a7d2a7e6744f1b92d8466e0c56"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a5449b52ebb29a6a9005ae8dc082b3415">scalar</a> (const <a class="el" href="classviennacl_1_1scalar.html">scalar</a> &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. Allocates new memory for the scalar and copies the value of the supplied scalar. <a href="#a5449b52ebb29a6a9005ae8dc082b3415"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">operator TYPE</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads the value of the scalar from the GPU and returns the float or double value. <a href="#aeeb8591dc2b4252a62d89522f583c9b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c">operator=</a> (<a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assigns a vector entry. <a href="#a2aebda7254fb1c2471fdedb2aa6dd36c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#aaeeb1bb633ef72f60b37ee06b3fd07da">operator=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assigns the value from another scalar. <a href="#aaeeb1bb633ef72f60b37ee06b3fd07da"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">operator=</a> (float cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">operator=</a> (double cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">operator=</a> (long cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">operator=</a> (unsigned long cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">operator=</a> (int cpu_other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">operator=</a> (unsigned int cpu_other)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a8f7fe13c798d1186206cd1cebe76b41f">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_inner_prod > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied inner product expression. <a href="#a8f7fe13c798d1186206cd1cebe76b41f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_1 > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied norm_1 expression. <a href="#a2f070f408c1f475ffb38ee82f59276c2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_2 > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied norm_2 expression. <a href="#a896fd9035e7735fd9fb3ea18fbae225e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">operator=</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_inf > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the scalar to the result of supplied norm_inf expression. <a href="#acea2777143dac0b71bfa981adbdf0fc5"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">operator+=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a ViennaCL scalar. <a href="#a54ddb6fd129bd75c57e27007c37a6ed9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a3ead36ea34f169d78e44c621834d92fa">operator+=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a host scalar (float or double). <a href="#a3ead36ea34f169d78e44c621834d92fa"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">operator-=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a ViennaCL scalar. <a href="#a67a75928643713bf283d1bdce350589c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a73870d8ac2703677743701c8fa1d0ac0">operator-=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a host scalar (float or double). <a href="#a73870d8ac2703677743701c8fa1d0ac0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">operator*=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace multiplication with a ViennaCL scalar. <a href="#a9b5f86e060ae258394d0333cff946b08"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a70b79d882deca6e3cb7d86ac5b893c58">operator*=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace multiplication with a host scalar (float or double). <a href="#a70b79d882deca6e3cb7d86ac5b893c58"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">operator/=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace division with a ViennaCL scalar. <a href="#a5bb32c06b69bc99ab13df93be2f262f4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a0631b7d2624ee483233b85ead71b4a78">operator/=</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace division with a host scalar (float or double). <a href="#a0631b7d2624ee483233b85ead71b4a78"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">operator+</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of two ViennaCL scalars. <a href="#afa3e3a23770f8609d7a0c45eaa656e88"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a6459d7d73f3f0d94757b0b1461d59814">operator+</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of a ViennaCL scalar with a scalar expression. <a href="#a6459d7d73f3f0d94757b0b1461d59814"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a843d737fff3a5d68391099cbf26381f2">operator+</a> (TYPE other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of a ViennaCL scalar with a host scalar (float, double). <a href="#a843d737fff3a5d68391099cbf26381f2"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">operator-</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of two ViennaCL scalars. <a href="#abdc9352f6678cbc1701d20b431901b32"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a46f766bad633277898cb5c4dcd033d68">operator-</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of a ViennaCL scalar from a scalar expression. <a href="#a46f766bad633277898cb5c4dcd033d68"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#aeb369f81094dc1dcae284916a820fa34">operator-</a> (TYPE other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of a host scalar (float, double) from a ViennaCL scalar. <a href="#aeb369f81094dc1dcae284916a820fa34"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplication of two ViennaCL scalars. <a href="#a4efbfcfdb603cbaa130b85fbb149eb16"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a8a8ee730a8f51c85440630a48d07429d">operator*</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplication of a ViennaCL scalar with a scalar expression. <a href="#a8a8ee730a8f51c85440630a48d07429d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a232414930e04594eeb40a5a387f91337">operator*</a> (TYPE other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplication of a host scalar (float, double) with a ViennaCL scalar. <a href="#a232414930e04594eeb40a5a387f91337"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">operator/</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const &other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Division of two ViennaCL scalars. <a href="#a1befc1cbf12e97f87caa1d2a18b560bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T1 , typename T2 , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#a27b5a8f4b44fd9f9b83e3e9f274f01e7">operator/</a> (<a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Division of a ViennaCL scalar by a scalar expression. <a href="#a27b5a8f4b44fd9f9b83e3e9f274f01e7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">operator/</a> (TYPE other) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Division of a ViennaCL scalar by a host scalar (float, double). <a href="#affd5ad0c4067234e832db130cea14288"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL handle. <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class TYPE><br/>
- class viennacl::scalar< TYPE ></h3>
-
-<p>This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double. </p>
-<p>Since every read and write operation requires a CPU->GPU or GPU->CPU transfer, this type should be used with care. The advantage of this type is that the GPU command queue can be filled without blocking read operations.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>TYPE</em> </td><td>Either float or double. Checked at compile time. </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a46dcdd29c175f21b173b96ae4dd0a46e"></a><!-- doxytag: member="viennacl::scalar::value_type" ref="a46dcdd29c175f21b173b96ae4dd0a46e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><TYPE>::ResultType <a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the underlying host scalar type. </p>
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a79453d11d5d0a0ab021762a68a73d97e"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a79453d11d5d0a0ab021762a68a73d97e" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates the memory for the scalar, but does not set it to zero. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab491583d840a0f494f5b6cf505defa7f"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="ab491583d840a0f494f5b6cf505defa7f" args="(TYPE val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates the memory for the scalar and sets it to the supplied value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a577ea3a750a7975b2a5c256f94081b1c"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a577ea3a750a7975b2a5c256f94081b1c" args="(cl_mem mem, size_t size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
- <td>(</td>
- <td class="paramtype">cl_mem </td>
- <td class="paramname"> <em>mem</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>size</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Wraps an existing memory entry into a scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mem</em> </td><td>The OpenCL memory handle </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>Ignored - Only necessary to avoid ambiguities. Users are advised to set this parameter to '1'. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1c6a89a7d2a7e6744f1b92d8466e0c56"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a1c6a89a7d2a7e6744f1b92d8466e0c56" args="(scalar_expression< T1, T2, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Allocates memory for the scalar and sets it to the result of supplied expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5449b52ebb29a6a9005ae8dc082b3415"></a><!-- doxytag: member="viennacl::scalar::scalar" ref="a5449b52ebb29a6a9005ae8dc082b3415" args="(const scalar &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copy constructor. Allocates new memory for the scalar and copies the value of the supplied scalar. </p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::scalar::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL handle. </p>
-
-</div>
-</div>
-<a class="anchor" id="aeeb8591dc2b4252a62d89522f583c9b3"></a><!-- doxytag: member="viennacl::scalar::operator TYPE" ref="aeeb8591dc2b4252a62d89522f583c9b3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">operator TYPE </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reads the value of the scalar from the GPU and returns the float or double value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4efbfcfdb603cbaa130b85fbb149eb16"></a><!-- doxytag: member="viennacl::scalar::operator*" ref="a4efbfcfdb603cbaa130b85fbb149eb16" args="(scalar< TYPE > const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator* </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplication of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8a8ee730a8f51c85440630a48d07429d"></a><!-- doxytag: member="viennacl::scalar::operator*" ref="a8a8ee730a8f51c85440630a48d07429d" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator* </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplication of a ViennaCL scalar with a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a232414930e04594eeb40a5a387f91337"></a><!-- doxytag: member="viennacl::scalar::operator*" ref="a232414930e04594eeb40a5a387f91337" args="(TYPE other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator* </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplication of a host scalar (float, double) with a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a9b5f86e060ae258394d0333cff946b08"></a><!-- doxytag: member="viennacl::scalar::operator*=" ref="a9b5f86e060ae258394d0333cff946b08" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator*= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace multiplication with a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a70b79d882deca6e3cb7d86ac5b893c58"></a><!-- doxytag: member="viennacl::scalar::operator*=" ref="a70b79d882deca6e3cb7d86ac5b893c58" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator*= </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace multiplication with a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="afa3e3a23770f8609d7a0c45eaa656e88"></a><!-- doxytag: member="viennacl::scalar::operator+" ref="afa3e3a23770f8609d7a0c45eaa656e88" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator+ </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6459d7d73f3f0d94757b0b1461d59814"></a><!-- doxytag: member="viennacl::scalar::operator+" ref="a6459d7d73f3f0d94757b0b1461d59814" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator+ </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of a ViennaCL scalar with a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a843d737fff3a5d68391099cbf26381f2"></a><!-- doxytag: member="viennacl::scalar::operator+" ref="a843d737fff3a5d68391099cbf26381f2" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator+ </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of a ViennaCL scalar with a host scalar (float, double). </p>
-
-</div>
-</div>
-<a class="anchor" id="a54ddb6fd129bd75c57e27007c37a6ed9"></a><!-- doxytag: member="viennacl::scalar::operator+=" ref="a54ddb6fd129bd75c57e27007c37a6ed9" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator+= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ead36ea34f169d78e44c621834d92fa"></a><!-- doxytag: member="viennacl::scalar::operator+=" ref="a3ead36ea34f169d78e44c621834d92fa" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator+= </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="aeb369f81094dc1dcae284916a820fa34"></a><!-- doxytag: member="viennacl::scalar::operator-" ref="aeb369f81094dc1dcae284916a820fa34" args="(TYPE other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator- </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of a host scalar (float, double) from a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="abdc9352f6678cbc1701d20b431901b32"></a><!-- doxytag: member="viennacl::scalar::operator-" ref="abdc9352f6678cbc1701d20b431901b32" args="(scalar< TYPE > const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator- </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a46f766bad633277898cb5c4dcd033d68"></a><!-- doxytag: member="viennacl::scalar::operator-" ref="a46f766bad633277898cb5c4dcd033d68" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator- </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of a ViennaCL scalar from a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a67a75928643713bf283d1bdce350589c"></a><!-- doxytag: member="viennacl::scalar::operator-=" ref="a67a75928643713bf283d1bdce350589c" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator-= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a73870d8ac2703677743701c8fa1d0ac0"></a><!-- doxytag: member="viennacl::scalar::operator-=" ref="a73870d8ac2703677743701c8fa1d0ac0" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator-= </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="affd5ad0c4067234e832db130cea14288"></a><!-- doxytag: member="viennacl::scalar::operator/" ref="affd5ad0c4067234e832db130cea14288" args="(TYPE other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator/ </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Division of a ViennaCL scalar by a host scalar (float, double). </p>
-
-</div>
-</div>
-<a class="anchor" id="a27b5a8f4b44fd9f9b83e3e9f274f01e7"></a><!-- doxytag: member="viennacl::scalar::operator/" ref="a27b5a8f4b44fd9f9b83e3e9f274f01e7" args="(scalar_expression< T1, T2, OP > const &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator/ </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Division of a ViennaCL scalar by a scalar expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a1befc1cbf12e97f87caa1d2a18b560bb"></a><!-- doxytag: member="viennacl::scalar::operator/" ref="a1befc1cbf12e97f87caa1d2a18b560bb" args="(scalar< TYPE > const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE> operator/ </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Division of two ViennaCL scalars. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0631b7d2624ee483233b85ead71b4a78"></a><!-- doxytag: member="viennacl::scalar::operator/=" ref="a0631b7d2624ee483233b85ead71b4a78" args="(TYPE other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator/= </td>
- <td>(</td>
- <td class="paramtype">TYPE </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace division with a host scalar (float or double). </p>
-
-</div>
-</div>
-<a class="anchor" id="a5bb32c06b69bc99ab13df93be2f262f4"></a><!-- doxytag: member="viennacl::scalar::operator/=" ref="a5bb32c06b69bc99ab13df93be2f262f4" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator/= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace division with a ViennaCL scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a896fd9035e7735fd9fb3ea18fbae225e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a896fd9035e7735fd9fb3ea18fbae225e" args="(scalar_expression< T1, T2, op_norm_2 > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_2 > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied norm_2 expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="acea2777143dac0b71bfa981adbdf0fc5"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="acea2777143dac0b71bfa981adbdf0fc5" args="(scalar_expression< T1, T2, op_norm_inf > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_inf > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied norm_inf expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8f7fe13c798d1186206cd1cebe76b41f"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a8f7fe13c798d1186206cd1cebe76b41f" args="(scalar_expression< T1, T2, op_inner_prod > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_inner_prod > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied inner product expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a601bfbe9d4b4f0a5136649f6b6f2062e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a601bfbe9d4b4f0a5136649f6b6f2062e" args="(unsigned long cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype">unsigned long </td>
- <td class="paramname"> <em>cpu_other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2d72be42c42830b4e6f5426dc385daca"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a2d72be42c42830b4e6f5426dc385daca" args="(int cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>cpu_other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aaeeb1bb633ef72f60b37ee06b3fd07da"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="aaeeb1bb633ef72f60b37ee06b3fd07da" args="(scalar< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Assigns the value from another scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a24e0667388106b9f4150ade71c219b29"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a24e0667388106b9f4150ade71c219b29" args="(double cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype">double </td>
- <td class="paramname"> <em>cpu_other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2f070f408c1f475ffb38ee82f59276c2"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a2f070f408c1f475ffb38ee82f59276c2" args="(scalar_expression< T1, T2, op_norm_1 > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a>< T1, T2, op_norm_1 > const & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Sets the scalar to the result of supplied norm_1 expression. </p>
-
-</div>
-</div>
-<a class="anchor" id="a11b85e1905ff83211365912d4d5c3d48"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a11b85e1905ff83211365912d4d5c3d48" args="(long cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>cpu_other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4de3e801606700dc657414c0634ad46e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a4de3e801606700dc657414c0634ad46e" args="(unsigned int cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>cpu_other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7b7ff8ec9039215d41042fb6dff8b24e"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a7b7ff8ec9039215d41042fb6dff8b24e" args="(float cpu_other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype">float </td>
- <td class="paramname"> <em>cpu_other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2aebda7254fb1c2471fdedb2aa6dd36c"></a><!-- doxytag: member="viennacl::scalar::operator=" ref="a2aebda7254fb1c2471fdedb2aa6dd36c" args="(entry_proxy< TYPE > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><TYPE>& operator= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< TYPE > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Assigns a vector entry. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1scalar__expression.html b/doc/doxygen/html/classviennacl_1_1scalar__expression.html
deleted file mode 100644
index fd4538e..0000000
--- a/doc/doxygen/html/classviennacl_1_1scalar__expression.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar_expression< LHS, RHS, OP > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>scalar_expression< LHS, RHS, OP > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::scalar_expression" -->
-<p>A proxy for scalar expressions (e.g. from inner vector products).
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef DummyType::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">ScalarType</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">LHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">get_lhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the left hand side operand. <a href="#a3abbcc6247aba0116cf7b95e231f3276"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">RHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">get_rhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the left hand side operand. <a href="#a039558d10a125ddba366e099b72c7b01"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">operator ScalarType</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Conversion operator to a ViennaCL scalar. <a href="#a0da7f7ae214746d5b37ea6c28855155c"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- class viennacl::scalar_expression< LHS, RHS, OP ></h3>
-
-<p>A proxy for scalar expressions (e.g. from inner vector products). </p>
-<p>assumption: dim(LHS) >= dim(RHS), where dim(scalar) = 0, dim(vector) = 1 and dim(matrix = 2) </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>The operation tag </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a009d628c069d36ec739ad659e1846413"></a><!-- doxytag: member="viennacl::scalar_expression::ScalarType" ref="a009d628c069d36ec739ad659e1846413" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef DummyType::value_type <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">ScalarType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ae0f765f70db16af7c6d8763b8316c17c"></a><!-- doxytag: member="viennacl::scalar_expression::scalar_expression" ref="ae0f765f70db16af7c6d8763b8316c17c" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a> </td>
- <td>(</td>
- <td class="paramtype">LHS & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">RHS & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a3abbcc6247aba0116cf7b95e231f3276"></a><!-- doxytag: member="viennacl::scalar_expression::get_lhs" ref="a3abbcc6247aba0116cf7b95e231f3276" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">LHS& get_lhs </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a039558d10a125ddba366e099b72c7b01"></a><!-- doxytag: member="viennacl::scalar_expression::get_rhs" ref="a039558d10a125ddba366e099b72c7b01" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">RHS& get_rhs </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0da7f7ae214746d5b37ea6c28855155c"></a><!-- doxytag: member="viennacl::scalar_expression::operator ScalarType" ref="a0da7f7ae214746d5b37ea6c28855155c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">operator <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">ScalarType</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Conversion operator to a ViennaCL scalar. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="scalar_8hpp_source.html">scalar.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html b/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html
deleted file mode 100644
index 9ec7520..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html
+++ /dev/null
@@ -1,331 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::const_sparse_matrix_adapted_iterator" -->
-<p>A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">iterator2</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator</a> (std::vector< std::map< unsigned int, SCALARTYPE > > const &mat, int i, int j)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">operator*</a> (void) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a> (unsigned int offset)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">index1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">index2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1, <br class="typebreak"/>
-true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">begin</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1, <br class="typebreak"/>
-true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">end</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE, bool is_iterator1, bool is_forward><br/>
- class viennacl::tools::const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></h3>
-
-<p>A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </p>
-<p>The iterator behaves like ublas iterators. Attention: Iteration along first columns and then rows via .<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">begin()</a> is untested!</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>is_iterator1</em> </td><td>if true, this iterator iterates along increasing row indices, otherwise along increasing column indices </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>increment</em> </td><td>if +1, this is a forward iterator, if -1 we have a reverse iterator </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9d0cefa870abca0f769b21678543f261"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::iterator1" ref="a9d0cefa870abca0f769b21678543f261" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">iterator1</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8ecdc71bf9b89cd058304a3d484cbdea"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::iterator2" ref="a8ecdc71bf9b89cd058304a3d484cbdea" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">iterator2</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a7e6adc520f4881192216bb7352aa3eb9"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::const_sparse_matrix_adapted_iterator" ref="a7e6adc520f4881192216bb7352aa3eb9" args="(std::vector< std::map< unsigned int, SCALARTYPE > > const &mat, int i, int j)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a> </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>j</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ab48a06d327e6296423955301ede64223"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::begin" ref="ab48a06d327e6296423955301ede64223" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1, true> begin </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afda31b300997d15900344226c403b540"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::end" ref="afda31b300997d15900344226c403b540" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1, true> end </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a722f0ccc3f96fb85034a8f00a3860470"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::index1" ref="a722f0ccc3f96fb85034a8f00a3860470" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int index1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a64b95ec918c78480532aa4578eac805f"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::index2" ref="a64b95ec918c78480532aa4578eac805f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">int index2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0c704f6470bc4c7392b964dd83a1d97b"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator!=" ref="a0c704f6470bc4c7392b964dd83a1d97b" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator!= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a46c279075bb75ded776ba3f280e0e38a"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator*" ref="a46c279075bb75ded776ba3f280e0e38a" args="(void) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">SCALARTYPE operator* </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5055e4100b53acad1be8697088ff1dc"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator++" ref="aa5055e4100b53acad1be8697088ff1dc" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4419c6af964a7de542db8474f8ef1091"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator++" ref="a4419c6af964a7de542db8474f8ef1091" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85ccc1b236b4311e422f330ac778e2aa"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator+=" ref="a85ccc1b236b4311e422f330ac778e2aa" args="(unsigned int offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> operator+= </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>offset</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae01970b831b1c1dc3a9f22f7a4e19cf6"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapted_iterator::operator==" ref="ae01970b831b1c1dc3a9f22f7a4e19cf6" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator== </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html b/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html
deleted file mode 100644
index 724c31c..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html
+++ /dev/null
@@ -1,342 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: const_sparse_matrix_adapter< SCALARTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>const_sparse_matrix_adapter< SCALARTYPE > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::const_sparse_matrix_adapter" -->
-<p>Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for const_sparse_matrix_adapter< SCALARTYPE >:</div>
-<div class="dyncontent">
- <div class="center">
- <img src="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png" usemap="#const_sparse_matrix_adapter< SCALARTYPE >_map" alt=""/>
- <map id="const_sparse_matrix_adapter< SCALARTYPE >_map" name="const_sparse_matrix_adapter< SCALARTYPE >_map">
-<area href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" alt="sparse_matrix_adapter< SCALARTYPE >" shape="rect" coords="0,56,283,80"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, true, true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, false, true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_iterator2</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, true, false > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_reverse_iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef SCALARTYPE </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">value_type</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter</a> (std::vector< std::map< unsigned int, SCALARTYPE > > const &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">size1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">begin1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">end1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">rbegin1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">rend1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">begin2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">end2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">operator()</a> (unsigned int i, unsigned int j) const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE><br/>
- class viennacl::tools::const_sparse_matrix_adapter< SCALARTYPE ></h3>
-
-<p>Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aa5359de96982fcefb8902889e90cd009"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_iterator1" ref="aa5359de96982fcefb8902889e90cd009" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, true, true> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adf83e37907ef2d594f62e4b05b9425bd"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_iterator2" ref="adf83e37907ef2d594f62e4b05b9425bd" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, false, true> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abb7af69bf0142c0d643bc87bb93c458c"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_reverse_iterator1" ref="abb7af69bf0142c0d643bc87bb93c458c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a><SCALARTYPE, true, false> <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab2ccf246e378a3df6f7a4d9da121f832"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::value_type" ref="ab2ccf246e378a3df6f7a4d9da121f832" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef SCALARTYPE <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="adc6d39eae2e1a492baf46df00aefbbd4"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::const_sparse_matrix_adapter" ref="adc6d39eae2e1a492baf46df00aefbbd4" args="(std::vector< std::map< unsigned int, SCALARTYPE > > const &mat)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter</a> </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > const & </td>
- <td class="paramname"> <em>mat</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a5b9dc1969b4f2a110d0cec988eb4b1ea"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::begin1" ref="a5b9dc1969b4f2a110d0cec988eb4b1ea" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> begin1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8799eeb54a7eccddce5661c438d535f3"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::begin2" ref="a8799eeb54a7eccddce5661c438d535f3" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> begin2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa29369f210d72e323561ef2f45c82e85"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::end1" ref="aa29369f210d72e323561ef2f45c82e85" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator1</a> end1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afe8212a7238c7a15a2731c5f47f775ec"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::end2" ref="afe8212a7238c7a15a2731c5f47f775ec" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_iterator2</a> end2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aebaa6cb9a0b72e0792005b58205f2073"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::operator()" ref="aebaa6cb9a0b72e0792005b58205f2073" args="(unsigned int i, unsigned int j) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">SCALARTYPE operator() </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>j</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8883d4e54ffd15ae74873f3ada1ad43b"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::rbegin1" ref="a8883d4e54ffd15ae74873f3ada1ad43b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> rbegin1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a88d31c317316b533e580da19c1a625e0"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::rend1" ref="a88d31c317316b533e580da19c1a625e0" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_reverse_iterator1</a> rend1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a890ed2f6c982169c737bd4f68b2a5db7"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::size1" ref="a890ed2f6c982169c737bd4f68b2a5db7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented in <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aacffdea3e049b0080b6fa4ac4c2fd881"></a><!-- doxytag: member="viennacl::tools::const_sparse_matrix_adapter::size2" ref="aacffdea3e049b0080b6fa4ac4c2fd881" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented in <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png b/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png
deleted file mode 100644
index bf6b20d..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1tools_1_1const__sparse__matrix__adapter.png and /dev/null differ
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html b/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html
deleted file mode 100644
index 049b071..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::sparse_matrix_adapted_iterator" -->
-<p>A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> >
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">iterator2</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator</a> (std::vector< std::map< unsigned int, SCALARTYPE > > &mat, int i, int j)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">operator*</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a> (int)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">operator+=</a> (unsigned int offset)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const &other) const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">index1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">index2</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">begin</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE,!is_iterator1 > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">end</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE, bool is_iterator1><br/>
- class viennacl::tools::sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></h3>
-
-<p>A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > </p>
-<p>The iterator behaves like ublas iterators. Attention: Iteration along first columns and then rows via .<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">begin()</a> is untested! Reverse iterators are missing!</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>is_iterator1</em> </td><td>if true, this iterator iterates along increasing row indices, otherwise along increasiong column indices </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9d0cefa870abca0f769b21678543f261"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::iterator1" ref="a9d0cefa870abca0f769b21678543f261" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8ecdc71bf9b89cd058304a3d484cbdea"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::iterator2" ref="a8ecdc71bf9b89cd058304a3d484cbdea" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a28ab748b9c7783bdf3aa8fa02203a85c"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::sparse_matrix_adapted_iterator" ref="a28ab748b9c7783bdf3aa8fa02203a85c" args="(std::vector< std::map< unsigned int, SCALARTYPE > > &mat, int i, int j)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a> </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>j</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aca3adf2f1528779c11d9abde704c2e69"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::begin" ref="aca3adf2f1528779c11d9abde704c2e69" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1> begin </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a94a6ed7c67c72c74986b98e1b1343cd1"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::end" ref="a94a6ed7c67c72c74986b98e1b1343cd1" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, !is_iterator1> end </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a48c62d5afba1616ab8081dc78b276075"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::index1" ref="a48c62d5afba1616ab8081dc78b276075" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int index1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5193f8c88b303f9ebf91c0368be0139b"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::index2" ref="a5193f8c88b303f9ebf91c0368be0139b" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int index2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0c704f6470bc4c7392b964dd83a1d97b"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator!=" ref="a0c704f6470bc4c7392b964dd83a1d97b" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator!= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2633ec1341d109e979b949d533ff1a2"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator*" ref="af2633ec1341d109e979b949d533ff1a2" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">SCALARTYPE& operator* </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5055e4100b53acad1be8697088ff1dc"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator++" ref="aa5055e4100b53acad1be8697088ff1dc" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4419c6af964a7de542db8474f8ef1091"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator++" ref="a4419c6af964a7de542db8474f8ef1091" args="(int)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a>& operator++ </td>
- <td>(</td>
- <td class="paramtype">int </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85ccc1b236b4311e422f330ac778e2aa"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator+=" ref="a85ccc1b236b4311e422f330ac778e2aa" args="(unsigned int offset)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> operator+= </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>offset</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae01970b831b1c1dc3a9f22f7a4e19cf6"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapted_iterator::operator==" ref="ae01970b831b1c1dc3a9f22f7a4e19cf6" args="(self_type const &other) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool operator== </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">self_type</a> const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.html b/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.html
deleted file mode 100644
index ad426c3..0000000
--- a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.html
+++ /dev/null
@@ -1,364 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: sparse_matrix_adapter< SCALARTYPE > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>sparse_matrix_adapter< SCALARTYPE > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::sparse_matrix_adapter" --><!-- doxytag: inherits="viennacl::tools::const_sparse_matrix_adapter" -->
-<p>Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for sparse_matrix_adapter< SCALARTYPE >:</div>
-<div class="dyncontent">
- <div class="center">
- <img src="classviennacl_1_1tools_1_1sparse__matrix__adapter.png" usemap="#sparse_matrix_adapter< SCALARTYPE >_map" alt=""/>
- <map id="sparse_matrix_adapter< SCALARTYPE >_map" name="sparse_matrix_adapter< SCALARTYPE >_map">
-<area href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" alt="const_sparse_matrix_adapter< SCALARTYPE >" shape="rect" coords="0,0,283,24"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, true > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">iterator1</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><br class="typebreak"/>
-< SCALARTYPE, false > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">iterator2</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter</a> (std::vector< std::map< unsigned int, SCALARTYPE > > &mat)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">begin1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">end1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">begin2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">end2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">SCALARTYPE & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">operator()</a> (unsigned int i, unsigned int j)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">resize</a> (unsigned int i, unsigned int j, bool preserve=true)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">size1</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">size1</a> () const </td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">size2</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">size2</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename SCALARTYPE><br/>
- class viennacl::tools::sparse_matrix_adapter< SCALARTYPE ></h3>
-
-<p>Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>either float or double </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9aa7f7547cc95c129d669a1e1bc552d9"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::iterator1" ref="a9aa7f7547cc95c129d669a1e1bc552d9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, true> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af9d07e03f84bf020e29667219e4c2ad8"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::iterator2" ref="af9d07e03f84bf020e29667219e4c2ad8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a><SCALARTYPE, false> <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="aa97338a4e54ded964e4d45a623adbf30"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::sparse_matrix_adapter" ref="aa97338a4e54ded964e4d45a623adbf30" args="(std::vector< std::map< unsigned int, SCALARTYPE > > &mat)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter</a> </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
- <td class="paramname"> <em>mat</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a61247f52ba999959dea8c58d3e8bc9a6"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::begin1" ref="a61247f52ba999959dea8c58d3e8bc9a6" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> begin1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0fc615f1d97d2b19550357e227f85485"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::begin2" ref="a0fc615f1d97d2b19550357e227f85485" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> begin2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::clear" ref="ac8bb3912a3ce86b15842e79d0b421204" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void clear </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad76ba25f213ed92724da42386c401417"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::end1" ref="ad76ba25f213ed92724da42386c401417" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator1</a> end1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac9c68d7fd4173418872d2233f894630c"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::end2" ref="ac9c68d7fd4173418872d2233f894630c" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">iterator2</a> end2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aafa6b6148eaffc7fb4518f473a5432ec"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::operator()" ref="aafa6b6148eaffc7fb4518f473a5432ec" args="(unsigned int i, unsigned int j)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">SCALARTYPE& operator() </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>j</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab49c1922c02e19737b2330be0b76e455"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::resize" ref="ab49c1922c02e19737b2330be0b76e455" args="(unsigned int i, unsigned int j, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void resize </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>j</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad851ae3af7f4c7b7441b653963dc434a"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size1" ref="ad851ae3af7f4c7b7441b653963dc434a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5dc0d7ea09d7bebc57839beeae58a3f7"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size1" ref="a5dc0d7ea09d7bebc57839beeae58a3f7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t size1 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented from <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">const_sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa1ab613bf0ce7b0cc370306d7425ffa2"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size2" ref="aa1ab613bf0ce7b0cc370306d7425ffa2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad5be0755605e62a9b2ca912ba0c6032e"></a><!-- doxytag: member="viennacl::tools::sparse_matrix_adapter::size2" ref="ad5be0755605e62a9b2ca912ba0c6032e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">size_t size2 </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reimplemented from <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">const_sparse_matrix_adapter< SCALARTYPE ></a>.</p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp_source.html">adapter.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.png b/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.png
deleted file mode 100644
index b1fe8dd..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1tools_1_1sparse__matrix__adapter.png and /dev/null differ
diff --git a/doc/doxygen/html/classviennacl_1_1vector.html b/doc/doxygen/html/classviennacl_1_1vector.html
deleted file mode 100644
index 2b2befa..0000000
--- a/doc/doxygen/html/classviennacl_1_1vector.html
+++ /dev/null
@@ -1,2262 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector< SCALARTYPE, ALIGNMENT > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::vector" -->
-<p>A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><br class="typebreak"/>
-< SCALARTYPE >::ResultType > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">value_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">difference_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">const_iterator</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">iterator</a></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">vector</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor in order to be compatible with various containers. <a href="#ad81d0c53b73688726d9e7da6fafe0383"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a37af05b711e0806bd57ae6e4adfeb46e">vector</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An explicit constructor for the vector, allocating the given amount of memory (plus a padding specified by 'ALIGNMENT'). <a href="#a37af05b711e0806bd57ae6e4adfeb46e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ae8ca03c5bcafbb1520e7382e8ac0050d">vector</a> (cl_mem existing_mem, <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a vector from existing OpenCL memory. <a href="#ae8ca03c5bcafbb1520e7382e8ac0050d"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a90f2d2832c55e1631a0cf00bc61c9a3d">vector</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &other)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abcd7469cb88bdf2e0f146b73ef567887">vector</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The copy constructor. <a href="#abcd7469cb88bdf2e0f146b73ef567887"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">operator=</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator. This vector is resized if 'vec' is of a different size. <a href="#a1442541c47d33407abda6838a344c49c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = alpha * v2, where alpha is a GPU scalar. <a href="#ac4770655192f11ccca15bbd39219d725"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = alpha * v2, where alpha is a CPU scalar. <a href="#ae91c07bfd48f22c8ea54d42583c3611f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 / alpha, where alpha is a GPU scalar. <a href="#a2cb54ea322ec4f89df8b798350c84f1b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 / alpha, where alpha is a CPU scalar. <a href="#a4a926e47e610c69c69d0f37a858cc69b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_add > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 + v3. <a href="#a77b68e4bfde82a92f70728c40b652f03"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_sub > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = v2 - v3. <a href="#a5bcfcbcb1d03f00ee8942a39e881207f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a276192f199fd2252c7296bd57dbb1a39">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#a276192f199fd2252c7296bd57dbb1a39"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#a8a3356317aca3d60689911cc206b35d3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#afdab89a0944ccdbe2ada1691060d7a68"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#adb89283433101dc99dc1050471499973"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#a5363d6592a73924f46f913b12f039ba1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a600a2a87ea67dfaaacfe63252c558a70">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#a600a2a87ea67dfaaacfe63252c558a70"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a7170c99b16798d529af0325845639839">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#a7170c99b16798d529af0325845639839"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#a42a2bea8b973e703dc74e7ad0a21ad75"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#afa36924cb9eece8efec2a62996e0f97a">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#afa36924cb9eece8efec2a62996e0f97a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F , unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a4ac366eca51e40271f505b2996173613">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. <a href="#a4ac366eca51e40271f505b2996173613"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2a7d2a919692ddc123ebd1452d374d5b">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a2a7d2a919692ddc123ebd1452d374d5b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a6a36ddeab9a741c125c9d9d4d49f0e77">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a6a36ddeab9a741c125c9d9d4d49f0e77"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a26f886c3b1df2ffa849ad9ab2e9e4fe2">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a26f886c3b1df2ffa849ad9ab2e9e4fe2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a34b711b607f3675c773b2c4db62b2c67">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a34b711b607f3675c773b2c4db62b2c67"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aaa7f595ff02bf1124f5c5e45fad08896">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#aaa7f595ff02bf1124f5c5e45fad08896"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a0acfd903198ff1e36ff67f62d67d7189">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#a0acfd903198ff1e36ff67f62d67d7189"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a558d5da8e439a7fac22354b25b84a458">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#a558d5da8e439a7fac22354b25b84a458"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a828077e1b1da533e174a7194f8a9210b">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#a828077e1b1da533e174a7194f8a9210b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a625df272798e5484b2b99645c164f618">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#a625df272798e5484b2b99645c164f618"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a38a33c6969ccc333a994d55cce743af9">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#a38a33c6969ccc333a994d55cce743af9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">resize</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> new_size, bool preserve=true)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'. <a href="#ac3afd1fbe76f7fed3e2b36b1297fa42c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">operator()</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read-write access to a single element of the vector. <a href="#ad39a7d06af546a8df947a8a36722eb03"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc">operator[]</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read-write access to a single element of the vector. <a href="#af8f3f9c5c359c354201a0e4386b4cfcc"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2de1bb775af4a87ce0b792154700c414">operator()</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read access to a single element of the vector. <a href="#a2de1bb775af4a87ce0b792154700c414"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">operator[]</a> (<a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Read access to a single element of the vector. <a href="#acd1666d8bd98191443b3b62f0944a822"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a87bf465ad5a49ddd749505935d931db3">operator+=</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a vector. <a href="#a87bf465ad5a49ddd749505935d931db3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abe21f33c50e397aeefd7d075ce85d259">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. <a href="#abe21f33c50e397aeefd7d075ce85d259"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a7aeced050a63cc0314a993d12330d2ab">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. <a href="#a7aeced050a63cc0314a993d12330d2ab"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aeddc9d15b96937b89a6122abfbb4a4b0">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar. <a href="#aeddc9d15b96937b89a6122abfbb4a4b0"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a2f8d78b1c904f274f2c50ec90f9a944e">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar. <a href="#a2f8d78b1c904f274f2c50ec90f9a944e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a478742d85955289d0fef99d591d92771">operator+=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. <a href="#a478742d85955289d0fef99d591d92771"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aae3c76bbb1a3e6023b1af706ce981b49">operator-=</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a vector. <a href="#aae3c76bbb1a3e6023b1af706ce981b49"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aea40ee2f758aa6fc99ce786efc8ef02c">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar. <a href="#aea40ee2f758aa6fc99ce786efc8ef02c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#afb6860261a249d443031fcaa6940806a">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar. <a href="#afb6860261a249d443031fcaa6940806a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a067bc8f3532c3d398671ede297159c18">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. <a href="#a067bc8f3532c3d398671ede297159c18"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. <a href="#a32ebaa055c897b1a6f3ea49e3b7022dd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a983376d820f950a2bc06d987a604c9b3">operator-=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. <a href="#a983376d820f950a2bc06d987a604c9b3"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">operator*=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a CPU scalar value. <a href="#adad7d33d0bb340be923ded4b7050867b"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a32d20bcbd10c909d2041c30cc942f080">operator*=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &gpu_val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a GPU scalar value. <a href="#a32d20bcbd10c909d2041c30cc942f080"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">operator/=</a> (SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a CPU scalar value. <a href="#af6ba5ebda72ab395ad1a1e5504088976"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">operator/=</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &gpu_val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales this vector by a CPU scalar value. <a href="#a3ffe49fc9f161ce2ea1fb130cd0195ca"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a87db4b1001dea6bfc9b47d1e07028552">operator+</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors. <a href="#a87db4b1001dea6bfc9b47d1e07028552"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abf44eeb0d6aebf7fac80026eb2aaff11">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar. <a href="#abf44eeb0d6aebf7fac80026eb2aaff11"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ae642a9b7a6e50936342bced1c2cc2aa9">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar. <a href="#ae642a9b7a6e50936342bced1c2cc2aa9"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a8c0fb94a7256a1afe4c16c4d54db7316">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar. <a href="#a8c0fb94a7256a1afe4c16c4d54db7316"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">operator+</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar. <a href="#a735ecd24c5432dbf339e9bf6a4bfefb6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ab4b953de766b713cf2016e69b75233de">operator-</a> (const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of result = v1 - v2. <a href="#ab4b953de766b713cf2016e69b75233de"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a1f057bb893f457b22ddd46aecc973469">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar. <a href="#a1f057bb893f457b22ddd46aecc973469"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ab6a6205580e81d2e2e477f55b75f8645">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar. <a href="#ab6a6205580e81d2e2e477f55b75f8645"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar. <a href="#a7b6c480cbd1da3812d587a729983fc4f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a92159381dc559d8caac28099589b85cf">operator-</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar. <a href="#a92159381dc559d8caac28099589b85cf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const SCALARTYPE, op_prod > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">operator*</a> (SCALARTYPE value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a CPU scalar 'alpha' and returns an expression template. <a href="#a0273e98b77b6a89e60116358fe27cc9d"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE ><br class="typebreak"/>
-, op_prod > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3ff0ebfa2e17bab4dbad38c0cd50d948">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a GPU scalar 'alpha' and returns an expression template. <a href="#a3ff0ebfa2e17bab4dbad38c0cd50d948"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const SCALARTYPE, op_div > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">operator/</a> (SCALARTYPE value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a CPU scalar 'alpha' and returns an expression template. <a href="#ad87b95d3c182effc15136d7c610200af"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE ><br class="typebreak"/>
-, op_div > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">operator/</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value) const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales the vector by a GPU scalar 'alpha' and returns an expression template. <a href="#ad309219e4080cb6a6427f3321d159b2c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8">begin</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to the beginning of the vector (STL like). <a href="#ad69bd11391be1a1dba5c8202259664f8"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">end</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to the end of the vector (STL like). <a href="#acad38d52497a975bfb6f2f6acd76631f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">begin</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a const-iterator pointing to the beginning of the vector (STL like). <a href="#aa4b02d4f1a8500fb07a551069060709f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a350132543d80a1c1e5be844e6d2878ea">end</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a const-iterator pointing to the end of the vector (STL like). <a href="#a350132543d80a1c1e5be844e6d2878ea"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">swap</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the entries of the two vectors. <a href="#af5a080ddc0576cfba4c7494ff8eccb09"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">fast_swap</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &other)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy. <a href="#a3f3c31234d9a1c823383bd6e8c2c9222"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the length of the vector (cf. std::vector). <a href="#a503ab01f6c0142145d3434f6924714e7"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">max_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the maximum possible size of the vector, which is given by 128 MByte due to limitations by OpenCL. <a href="#a0ab5ce862c0331d9e45a6e1774fca131"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">internal_size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the internal length of the vector, which is given by <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size()</a> plus the extra memory due to padding the memory with zeros up to a multiple of 'ALIGNMENT'. <a href="#aa50eb28af8d336f420b4de7b67ce738c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">empty</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns true is the size is zero. <a href="#a3f37b042a1e7cd4bd38fc564de81f0da"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><br class="typebreak"/>
-< cl_mem > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">handle</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the OpenCL memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>. Typically used for launching compute viennacl::ocl::kernels. <a href="#abe419a13116160fd12b66f47c5180e5c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Resets all entries to zero. Does not change the size of the vector. <a href="#ac8bb3912a3ce86b15842e79d0b421204"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix. <a href="#a4989aaec23a5611beaa87e1653824aa6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix. <a href="#a9591491bc69f66f82202a86f054ef7ac"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F, unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix. <a href="#abf65c6fc9600970e4ac00b693e0d04fb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename F, unsigned int MAT_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html#aa34adb8d02e43797f23d78bd0fcb7ce9">operator=</a> (const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the operation v1 = A * v2, where A is a matrix. <a href="#aa34adb8d02e43797f23d78bd0fcb7ce9"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::vector< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector. </p>
-<p>This is the basic vector type of ViennaCL. It is similar to std::vector and boost::numeric::ublas::vector and supports various linear algebra operations. By default, the internal length of the vector is padded to a multiple of 'ALIGNMENT' in order to speed up several GPU viennacl::ocl::kernels.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The floating point type, either 'float' or 'double' </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>The internal memory size is given by (<a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size()</a>/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory. </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a5b0cecdbbf962357b5dc5f79dcae2d66"></a><!-- doxytag: member="viennacl::vector::const_iterator" ref="a5b0cecdbbf962357b5dc5f79dcae2d66" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a><SCALARTYPE, ALIGNMENT> <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1d7ed47a15fea60d02986112826f40bc"></a><!-- doxytag: member="viennacl::vector::difference_type" ref="a1d7ed47a15fea60d02986112826f40bc" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a> <a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">difference_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a589223a5e682b4a61d57bb8742b1cec9"></a><!-- doxytag: member="viennacl::vector::iterator" ref="a589223a5e682b4a61d57bb8742b1cec9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a><SCALARTYPE, ALIGNMENT> <a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8e2cc70e5cd203262fe8270613f303ec"></a><!-- doxytag: member="viennacl::vector::size_type" ref="a8e2cc70e5cd203262fe8270613f303ec" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a> <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aed985c700866b1bae61cb8bcd5d322fe"></a><!-- doxytag: member="viennacl::vector::value_type" ref="aed985c700866b1bae61cb8bcd5d322fe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1scalar.html">scalar</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT</a><SCALARTYPE>::ResultType> <a class="el" href="classviennacl_1_1scalar.html">value_type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ad81d0c53b73688726d9e7da6fafe0383"></a><!-- doxytag: member="viennacl::vector::vector" ref="ad81d0c53b73688726d9e7da6fafe0383" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Default constructor in order to be compatible with various containers. </p>
-
-</div>
-</div>
-<a class="anchor" id="a37af05b711e0806bd57ae6e4adfeb46e"></a><!-- doxytag: member="viennacl::vector::vector" ref="a37af05b711e0806bd57ae6e4adfeb46e" args="(size_type vec_size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
- <td class="paramname"> <em>vec_size</em></td>
- <td> ) </td>
- <td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>An explicit constructor for the vector, allocating the given amount of memory (plus a padding specified by 'ALIGNMENT'). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec_size</em> </td><td>The length (i.e. size) of the vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae8ca03c5bcafbb1520e7382e8ac0050d"></a><!-- doxytag: member="viennacl::vector::vector" ref="ae8ca03c5bcafbb1520e7382e8ac0050d" args="(cl_mem existing_mem, size_type vec_size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
- <td>(</td>
- <td class="paramtype">cl_mem </td>
- <td class="paramname"> <em>existing_mem</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
- <td class="paramname"> <em>vec_size</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, explicit]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Create a vector from existing OpenCL memory. </p>
-<p>Note: The provided memory must take an eventual ALIGNMENT into account, i.e. existing_mem must be at least of size <a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size()</a>! This is trivially the case with the default alignment, but should be considered when using vector<> with an alignment parameter not equal to 1.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>existing_mem</em> </td><td>An OpenCL handle representing the memory </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec_size</em> </td><td>The size of the vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a90f2d2832c55e1631a0cf00bc61c9a3d"></a><!-- doxytag: member="viennacl::vector::vector" ref="a90f2d2832c55e1631a0cf00bc61c9a3d" args="(vector_expression< LHS, RHS, OP > const &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abcd7469cb88bdf2e0f146b73ef567887"></a><!-- doxytag: member="viennacl::vector::vector" ref="abcd7469cb88bdf2e0f146b73ef567887" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a> </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The copy constructor. </p>
-<p>Entries of 'vec' are directly copied to this vector. </p>
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ad69bd11391be1a1dba5c8202259664f8"></a><!-- doxytag: member="viennacl::vector::begin" ref="ad69bd11391be1a1dba5c8202259664f8" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> begin </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an iterator pointing to the beginning of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="aa4b02d4f1a8500fb07a551069060709f"></a><!-- doxytag: member="viennacl::vector::begin" ref="aa4b02d4f1a8500fb07a551069060709f" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> begin </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a const-iterator pointing to the beginning of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a><!-- doxytag: member="viennacl::vector::clear" ref="ac8bb3912a3ce86b15842e79d0b421204" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void clear </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Resets all entries to zero. Does not change the size of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3f37b042a1e7cd4bd38fc564de81f0da"></a><!-- doxytag: member="viennacl::vector::empty" ref="a3f37b042a1e7cd4bd38fc564de81f0da" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool empty </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns true is the size is zero. </p>
-
-</div>
-</div>
-<a class="anchor" id="a350132543d80a1c1e5be844e6d2878ea"></a><!-- doxytag: member="viennacl::vector::end" ref="a350132543d80a1c1e5be844e6d2878ea" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_iterator</a> end </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a const-iterator pointing to the end of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="acad38d52497a975bfb6f2f6acd76631f"></a><!-- doxytag: member="viennacl::vector::end" ref="acad38d52497a975bfb6f2f6acd76631f" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">iterator</a> end </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an iterator pointing to the end of the vector (STL like). </p>
-
-</div>
-</div>
-<a class="anchor" id="a3f3c31234d9a1c823383bd6e8c2c9222"></a><!-- doxytag: member="viennacl::vector::fast_swap" ref="a3f3c31234d9a1c823383bd6e8c2c9222" args="(vector< SCALARTYPE, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& fast_swap </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy. </p>
-
-</div>
-</div>
-<a class="anchor" id="abe419a13116160fd12b66f47c5180e5c"></a><!-- doxytag: member="viennacl::vector::handle" ref="abe419a13116160fd12b66f47c5180e5c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const <a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem>& handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the OpenCL memory <a class="el" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle</a>. Typically used for launching compute viennacl::ocl::kernels. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa50eb28af8d336f420b4de7b67ce738c"></a><!-- doxytag: member="viennacl::vector::internal_size" ref="aa50eb28af8d336f420b4de7b67ce738c" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> internal_size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the internal length of the vector, which is given by <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size()</a> plus the extra memory due to padding the memory with zeros up to a multiple of 'ALIGNMENT'. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0ab5ce862c0331d9e45a6e1774fca131"></a><!-- doxytag: member="viennacl::vector::max_size" ref="a0ab5ce862c0331d9e45a6e1774fca131" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> max_size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the maximum possible size of the vector, which is given by 128 MByte due to limitations by OpenCL. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad39a7d06af546a8df947a8a36722eb03"></a><!-- doxytag: member="viennacl::vector::operator()" ref="ad39a7d06af546a8df947a8a36722eb03" args="(size_type index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a><SCALARTYPE> operator() </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
- <td class="paramname"> <em>index</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Read-write access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2de1bb775af4a87ce0b792154700c414"></a><!-- doxytag: member="viennacl::vector::operator()" ref="a2de1bb775af4a87ce0b792154700c414" args="(size_type index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> operator() </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
- <td class="paramname"> <em>index</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Read access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0273e98b77b6a89e60116358fe27cc9d"></a><!-- doxytag: member="viennacl::vector::operator*" ref="a0273e98b77b6a89e60116358fe27cc9d" args="(SCALARTYPE value) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const SCALARTYPE, op_prod> operator* </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a CPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ff0ebfa2e17bab4dbad38c0cd50d948"></a><!-- doxytag: member="viennacl::vector::operator*" ref="a3ff0ebfa2e17bab4dbad38c0cd50d948" args="(scalar< SCALARTYPE > const &value) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE>, op_prod> operator* </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a GPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="adad7d33d0bb340be923ded4b7050867b"></a><!-- doxytag: member="viennacl::vector::operator*=" ref="adad7d33d0bb340be923ded4b7050867b" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator*= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a CPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a32d20bcbd10c909d2041c30cc942f080"></a><!-- doxytag: member="viennacl::vector::operator*=" ref="a32d20bcbd10c909d2041c30cc942f080" args="(scalar< SCALARTYPE > const &gpu_val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator*= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>gpu_val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a GPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="afa36924cb9eece8efec2a62996e0f97a"></a><!-- doxytag: member="viennacl::vector::operator+" ref="afa36924cb9eece8efec2a62996e0f97a" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a34b711b607f3675c773b2c4db62b2c67"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a34b711b607f3675c773b2c4db62b2c67" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87db4b1001dea6bfc9b47d1e07028552"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a87db4b1001dea6bfc9b47d1e07028552" args="(const vector< SCALARTYPE, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors. </p>
-
-</div>
-</div>
-<a class="anchor" id="abf44eeb0d6aebf7fac80026eb2aaff11"></a><!-- doxytag: member="viennacl::vector::operator+" ref="abf44eeb0d6aebf7fac80026eb2aaff11" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="ae642a9b7a6e50936342bced1c2cc2aa9"></a><!-- doxytag: member="viennacl::vector::operator+" ref="ae642a9b7a6e50936342bced1c2cc2aa9" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8c0fb94a7256a1afe4c16c4d54db7316"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a8c0fb94a7256a1afe4c16c4d54db7316" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a735ecd24c5432dbf339e9bf6a4bfefb6"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a735ecd24c5432dbf339e9bf6a4bfefb6" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 + v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="adb89283433101dc99dc1050471499973"></a><!-- doxytag: member="viennacl::vector::operator+" ref="adb89283433101dc99dc1050471499973" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a625df272798e5484b2b99645c164f618"></a><!-- doxytag: member="viennacl::vector::operator+" ref="a625df272798e5484b2b99645c164f618" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator+ </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 + A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87bf465ad5a49ddd749505935d931db3"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a87bf465ad5a49ddd749505935d931db3" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8a3356317aca3d60689911cc206b35d3"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a8a3356317aca3d60689911cc206b35d3" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abe21f33c50e397aeefd7d075ce85d259"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="abe21f33c50e397aeefd7d075ce85d259" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7aeced050a63cc0314a993d12330d2ab"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a7aeced050a63cc0314a993d12330d2ab" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a6a36ddeab9a741c125c9d9d4d49f0e77"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a6a36ddeab9a741c125c9d9d4d49f0e77" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aeddc9d15b96937b89a6122abfbb4a4b0"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="aeddc9d15b96937b89a6122abfbb4a4b0" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a2f8d78b1c904f274f2c50ec90f9a944e"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a2f8d78b1c904f274f2c50ec90f9a944e" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a478742d85955289d0fef99d591d92771"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a478742d85955289d0fef99d591d92771" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of a scaled vector, i.e. v1 += alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7170c99b16798d529af0325845639839"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a7170c99b16798d529af0325845639839" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a558d5da8e439a7fac22354b25b84a458"></a><!-- doxytag: member="viennacl::vector::operator+=" ref="a558d5da8e439a7fac22354b25b84a458" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator+= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation v1 += A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4ac366eca51e40271f505b2996173613"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a4ac366eca51e40271f505b2996173613" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab4b953de766b713cf2016e69b75233de"></a><!-- doxytag: member="viennacl::vector::operator-" ref="ab4b953de766b713cf2016e69b75233de" args="(const vector< SCALARTYPE, ALIGNMENT > &vec) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of result = v1 - v2. </p>
-
-</div>
-</div>
-<a class="anchor" id="aaa7f595ff02bf1124f5c5e45fad08896"></a><!-- doxytag: member="viennacl::vector::operator-" ref="aaa7f595ff02bf1124f5c5e45fad08896" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1f057bb893f457b22ddd46aecc973469"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a1f057bb893f457b22ddd46aecc973469" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a92159381dc559d8caac28099589b85cf"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a92159381dc559d8caac28099589b85cf" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a38a33c6969ccc333a994d55cce743af9"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a38a33c6969ccc333a994d55cce743af9" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab6a6205580e81d2e2e477f55b75f8645"></a><!-- doxytag: member="viennacl::vector::operator-" ref="ab6a6205580e81d2e2e477f55b75f8645" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a7b6c480cbd1da3812d587a729983fc4f"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a7b6c480cbd1da3812d587a729983fc4f" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT> operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds up two vectors, i.e. result = v1 - v2 * alpha, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a5363d6592a73924f46f913b12f039ba1"></a><!-- doxytag: member="viennacl::vector::operator-" ref="a5363d6592a73924f46f913b12f039ba1" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > operator- </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation 'result = v1 - A * v2', where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a067bc8f3532c3d398671ede297159c18"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a067bc8f3532c3d398671ede297159c18" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="aae3c76bbb1a3e6023b1af706ce981b49"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="aae3c76bbb1a3e6023b1af706ce981b49" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="a32ebaa055c897b1a6f3ea49e3b7022dd"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a32ebaa055c897b1a6f3ea49e3b7022dd" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="afdab89a0944ccdbe2ada1691060d7a68"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="afdab89a0944ccdbe2ada1691060d7a68" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aea40ee2f758aa6fc99ce786efc8ef02c"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="aea40ee2f758aa6fc99ce786efc8ef02c" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a26f886c3b1df2ffa849ad9ab2e9e4fe2"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a26f886c3b1df2ffa849ad9ab2e9e4fe2" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a983376d820f950a2bc06d987a604c9b3"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a983376d820f950a2bc06d987a604c9b3" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a CPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a828077e1b1da533e174a7194f8a9210b"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a828077e1b1da533e174a7194f8a9210b" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb6860261a249d443031fcaa6940806a"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="afb6860261a249d443031fcaa6940806a" args="(const vector_expression< const vector< SCALARTYPE, ALIGNMENT >, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace subtraction of a scaled vector, i.e. v1 -= alpha * v2, where alpha is a GPU scalar. </p>
-
-</div>
-</div>
-<a class="anchor" id="a42a2bea8b973e703dc74e7ad0a21ad75"></a><!-- doxytag: member="viennacl::vector::operator-=" ref="a42a2bea8b973e703dc74e7ad0a21ad75" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & operator-= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 -= trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<p>Implementation of the operation v1 -= A * v2, where A is a matrix.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class</td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad309219e4080cb6a6427f3321d159b2c"></a><!-- doxytag: member="viennacl::vector::operator/" ref="ad309219e4080cb6a6427f3321d159b2c" args="(scalar< SCALARTYPE > const &value) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE>, op_div> operator/ </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a GPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="ad87b95d3c182effc15136d7c610200af"></a><!-- doxytag: member="viennacl::vector::operator/" ref="ad87b95d3c182effc15136d7c610200af" args="(SCALARTYPE value) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>, const SCALARTYPE, op_div> operator/ </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>value</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales the vector by a CPU scalar 'alpha' and returns an expression template. </p>
-
-</div>
-</div>
-<a class="anchor" id="af6ba5ebda72ab395ad1a1e5504088976"></a><!-- doxytag: member="viennacl::vector::operator/=" ref="af6ba5ebda72ab395ad1a1e5504088976" args="(SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator/= </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a CPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="a3ffe49fc9f161ce2ea1fb130cd0195ca"></a><!-- doxytag: member="viennacl::vector::operator/=" ref="a3ffe49fc9f161ce2ea1fb130cd0195ca" args="(scalar< SCALARTYPE > const &gpu_val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator/= </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>gpu_val</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales this vector by a CPU scalar value. </p>
-
-</div>
-</div>
-<a class="anchor" id="abf65c6fc9600970e4ac00b693e0d04fb"></a><!-- doxytag: member="viennacl::vector::operator=" ref="abf65c6fc9600970e4ac00b693e0d04fb" args="(const viennacl::vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae91c07bfd48f22c8ea54d42583c3611f"></a><!-- doxytag: member="viennacl::vector::operator=" ref="ae91c07bfd48f22c8ea54d42583c3611f" args="(const vector_expression< VectorType, const SCALARTYPE, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = alpha * v2, where alpha is a CPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5bcfcbcb1d03f00ee8942a39e881207f"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a5bcfcbcb1d03f00ee8942a39e881207f" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, vector< SCALARTYPE, ALIGNMENT >, op_sub > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_sub > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 - v3. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa34adb8d02e43797f23d78bd0fcb7ce9"></a><!-- doxytag: member="viennacl::vector::operator=" ref="aa34adb8d02e43797f23d78bd0fcb7ce9" args="(const viennacl::vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a77b68e4bfde82a92f70728c40b652f03"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a77b68e4bfde82a92f70728c40b652f03" args="(const vector_expression< vector< SCALARTYPE, ALIGNMENT >, vector< SCALARTYPE, ALIGNMENT >, op_add > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_add > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 + v3. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4989aaec23a5611beaa87e1653824aa6"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a4989aaec23a5611beaa87e1653824aa6" args="(const viennacl::vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2a7d2a919692ddc123ebd1452d374d5b"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a2a7d2a919692ddc123ebd1452d374d5b" args="(const vector_expression< const compressed_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a276192f199fd2252c7296bd57dbb1a39"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a276192f199fd2252c7296bd57dbb1a39" args="(const vector_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0acfd903198ff1e36ff67f62d67d7189"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a0acfd903198ff1e36ff67f62d67d7189" args="(const vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ac4770655192f11ccca15bbd39219d725"></a><!-- doxytag: member="viennacl::vector::operator=" ref="ac4770655192f11ccca15bbd39219d725" args="(const vector_expression< VectorType, const scalar< SCALARTYPE >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = alpha * v2, where alpha is a GPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9591491bc69f66f82202a86f054ef7ac"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a9591491bc69f66f82202a86f054ef7ac" args="(const viennacl::vector_expression< const coordinate_matrix< SCALARTYPE, MAT_ALIGNMENT >, const viennacl::vector< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT >, viennacl::op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = A * v2, where A is a matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a600a2a87ea67dfaaacfe63252c558a70"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a600a2a87ea67dfaaacfe63252c558a70" args="(const vector_expression< const matrix_expression< const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, const matrix< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const vector< SCALARTYPE, ALIGNMENT >, op_prod > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, MAT_ALIGNMENT >, op_trans >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for v1 = trans(A) * v2, where v1, v2 are vectors and A is a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1442541c47d33407abda6838a344c49c"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a1442541c47d33407abda6838a344c49c" args="(const vector< SCALARTYPE, ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Assignment operator. This vector is resized if 'vec' is of a different size. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4a926e47e610c69c69d0f37a858cc69b"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a4a926e47e610c69c69d0f37a858cc69b" args="(const vector_expression< VectorType, const SCALARTYPE, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const SCALARTYPE, op_div > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 / alpha, where alpha is a CPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2cb54ea322ec4f89df8b798350c84f1b"></a><!-- doxytag: member="viennacl::vector::operator=" ref="a2cb54ea322ec4f89df8b798350c84f1b" args="(const vector_expression< VectorType, const scalar< SCALARTYPE >, op_div > &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& operator= </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< VectorType, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_div > & </td>
- <td class="paramname"> <em>proxy</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the operation v1 = v2 / alpha, where alpha is a GPU scalar. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>An expression template proxy class. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="acd1666d8bd98191443b3b62f0944a822"></a><!-- doxytag: member="viennacl::vector::operator[]" ref="acd1666d8bd98191443b3b62f0944a822" args="(size_type index) const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE> operator[] </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
- <td class="paramname"> <em>index</em></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Read access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="af8f3f9c5c359c354201a0e4386b4cfcc"></a><!-- doxytag: member="viennacl::vector::operator[]" ref="af8f3f9c5c359c354201a0e4386b4cfcc" args="(size_type index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a><SCALARTYPE> operator[] </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
- <td class="paramname"> <em>index</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Read-write access to a single element of the vector. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac3afd1fbe76f7fed3e2b36b1297fa42c"></a><!-- doxytag: member="viennacl::vector::resize" ref="ac3afd1fbe76f7fed3e2b36b1297fa42c" args="(size_type new_size, bool preserve=true)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void resize </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> </td>
- <td class="paramname"> <em>new_size</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bool </td>
- <td class="paramname"> <em>preserve</em> = <code>true</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>new_size</em> </td><td>The new size of the vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>preserve</em> </td><td>If true, old entries of the vector are preserved, otherwise eventually discarded. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a503ab01f6c0142145d3434f6924714e7"></a><!-- doxytag: member="viennacl::vector::size" ref="a503ab01f6c0142145d3434f6924714e7" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the length of the vector (cf. std::vector). </p>
-
-</div>
-</div>
-<a class="anchor" id="af5a080ddc0576cfba4c7494ff8eccb09"></a><!-- doxytag: member="viennacl::vector::swap" ref="af5a080ddc0576cfba4c7494ff8eccb09" args="(vector< SCALARTYPE, ALIGNMENT > &other)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& swap </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>other</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the entries of the two vectors. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="compressed__matrix__operations_8hpp_source.html">compressed_matrix_operations.hpp</a></li>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="coordinate__matrix__operations_8hpp_source.html">coordinate_matrix_operations.hpp</a></li>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="matrix__operations_8hpp_source.html">matrix_operations.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1vector__expression.html b/doc/doxygen/html/classviennacl_1_1vector__expression.html
deleted file mode 100644
index 9aa0bc4..0000000
--- a/doc/doxygen/html/classviennacl_1_1vector__expression.html
+++ /dev/null
@@ -1,189 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector_expression< LHS, RHS, OP > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> |
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector_expression< LHS, RHS, OP > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::vector_expression" -->
-<p>An expression template class that represents a binary operation that yields a vector.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">viennacl::tools::VECTOR_EXTRACTOR</a><br class="typebreak"/>
-< LHS, RHS >::ResultType </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">VectorType</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from the two operands. <a href="#a5db65f00c1e206d9129dcd7721e46067"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">LHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">lhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get left hand side operand. <a href="#abb680866089de4e937ddc6ce6f1f1830"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">RHS & </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">rhs</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Get right hand side operand. <a href="#a563f5aecaa0755006225235e44a11a82"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">size</a> () const </td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the size of the result vector. <a href="#a90ca964ebcc1b02bbcde225edd49e812"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- class viennacl::vector_expression< LHS, RHS, OP ></h3>
-
-<p>An expression template class that represents a binary operation that yields a vector. </p>
-<p>In contrast to full expression templates as introduced by Veldhuizen, ViennaCL does not allow nested expressions. The reason is that this requires automated GPU <a class="el" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> generation, which then has to be compiles just-in-time. For performance-critical applications, one better writes the appropriate viennacl::ocl::kernels by hand.</p>
-<p>Assumption: dim(LHS) >= dim(RHS), where dim(scalar) = 0, dim(vector) = 1 and dim(matrix = 2)</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>the operator </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a5db65f00c1e206d9129dcd7721e46067"></a><!-- doxytag: member="viennacl::vector_expression::VectorType" ref="a5db65f00c1e206d9129dcd7721e46067" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">viennacl::tools::VECTOR_EXTRACTOR</a><LHS, RHS>::ResultType <a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">VectorType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Extracts the vector type from the two operands. </p>
-
-</div>
-</div>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a47b51aeee8120fa441f37d71f56b12c7"></a><!-- doxytag: member="viennacl::vector_expression::vector_expression" ref="a47b51aeee8120fa441f37d71f56b12c7" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a> </td>
- <td>(</td>
- <td class="paramtype">LHS & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">RHS & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abb680866089de4e937ddc6ce6f1f1830"></a><!-- doxytag: member="viennacl::vector_expression::lhs" ref="abb680866089de4e937ddc6ce6f1f1830" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">LHS& lhs </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Get left hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a563f5aecaa0755006225235e44a11a82"></a><!-- doxytag: member="viennacl::vector_expression::rhs" ref="a563f5aecaa0755006225235e44a11a82" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">RHS& rhs </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Get right hand side operand. </p>
-
-</div>
-</div>
-<a class="anchor" id="a90ca964ebcc1b02bbcde225edd49e812"></a><!-- doxytag: member="viennacl::vector_expression::size" ref="a90ca964ebcc1b02bbcde225edd49e812" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int size </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the size of the result vector. </p>
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1vector__iterator.html b/doc/doxygen/html/classviennacl_1_1vector__iterator.html
deleted file mode 100644
index 1c2ad48..0000000
--- a/doc/doxygen/html/classviennacl_1_1vector__iterator.html
+++ /dev/null
@@ -1,241 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector_iterator< SCALARTYPE, ALIGNMENT > Class Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::vector_iterator" --><!-- doxytag: inherits="viennacl::const_vector_iterator" -->
-<p>A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="vector_8hpp_source.html">vector.hpp</a>></code></p>
-<div class="dynheader">
-Inheritance diagram for vector_iterator< SCALARTYPE, ALIGNMENT >:</div>
-<div class="dyncontent">
- <div class="center">
- <img src="classviennacl_1_1vector__iterator.png" usemap="#vector_iterator< SCALARTYPE, ALIGNMENT >_map" alt=""/>
- <map id="vector_iterator< SCALARTYPE, ALIGNMENT >_map" name="vector_iterator< SCALARTYPE, ALIGNMENT >_map">
-<area href="classviennacl_1_1const__vector__iterator.html" alt="const_vector_iterator< SCALARTYPE, ALIGNMENT >" shape="rect" coords="0,0,319,24"/>
-</map>
-</div>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">vector_iterator</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a85d26854f63fc4da7b9f64f1dc1885b6">vector_iterator</a> (<a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const &elements, unsigned int index)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88">vector_iterator</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &vec, cl_uint index)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#ab2e550b8717745228f53d20fa8cd4a88"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#ad856d30aabbab284be47dcf0a38c0693">vector_iterator</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">base_type</a> const &b)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar.html">base_type::value_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">operator*</a> (void)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">operator base_type</a> () const </td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, unsigned int ALIGNMENT><br/>
- class viennacl::vector_iterator< SCALARTYPE, ALIGNMENT ></h3>
-
-<p>A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!! </p>
-<p>Every dereference operation initiates a transfer from the GPU to the CPU. The overhead of such a transfer is around 50us, so 20.000 dereferences take one second. This is four orders of magnitude slower than similar dereferences on the CPU. However, increments and comparisons of iterators is as fast as for CPU types. If you need a fast iterator, copy the whole vector to the CPU first and iterate over the CPU object, e.g. std::vector<float> temp; copy(gpu_vector, temp); for (std::vector<float>::const_iterator iter = temp.begin(); iter != temp.end(); ++iter) { //do something } copy(temp, gpu_vector); Note that you may obtain inconsistent data if you manipulate entries of gpu_vector in the meanwhile.</p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>SCALARTYPE</em> </td><td>The underlying floating point type (either float or double) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>ALIGNMENT</em> </td><td>Alignment of the underlying vector, </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a> </dd></dl>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a870d4c95600057004f7f4022a87bcf2a"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="a870d4c95600057004f7f4022a87bcf2a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85d26854f63fc4da7b9f64f1dc1885b6"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="a85d26854f63fc4da7b9f64f1dc1885b6" args="(viennacl::ocl::handle< cl_mem > const &elements, unsigned int index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a>< cl_mem > const & </td>
- <td class="paramname"> <em>elements</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>index</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab2e550b8717745228f53d20fa8cd4a88"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="ab2e550b8717745228f53d20fa8cd4a88" args="(vector< SCALARTYPE, ALIGNMENT > &vec, cl_uint index)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_uint </td>
- <td class="paramname"> <em>index</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Constructor. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector over which to iterate </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>The starting index of the iterator </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad856d30aabbab284be47dcf0a38c0693"></a><!-- doxytag: member="viennacl::vector_iterator::vector_iterator" ref="ad856d30aabbab284be47dcf0a38c0693" args="(base_type const &b)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a> </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1const__vector__iterator.html">base_type</a> const & </td>
- <td class="paramname"> <em>b</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a7e12b10e3e03ef763a5aa8a70eb21aa7"></a><!-- doxytag: member="viennacl::vector_iterator::handle" ref="a7e12b10e3e03ef763a5aa8a70eb21aa7" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle</a><cl_mem> handle </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a327ab3f759dae4072bfabbef27d7a981"></a><!-- doxytag: member="viennacl::vector_iterator::operator base_type" ref="a327ab3f759dae4072bfabbef27d7a981" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">operator <a class="el" href="classviennacl_1_1const__vector__iterator.html">base_type</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td> const<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aca896a4673a17317ad7068e8b769a6c8"></a><!-- doxytag: member="viennacl::vector_iterator::operator*" ref="aca896a4673a17317ad7068e8b769a6c8" args="(void)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar.html">base_type::value_type</a> operator* </td>
- <td>(</td>
- <td class="paramtype">void </td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this class was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp_source.html">vector.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/classviennacl_1_1vector__iterator.png b/doc/doxygen/html/classviennacl_1_1vector__iterator.png
deleted file mode 100644
index bbd1a30..0000000
Binary files a/doc/doxygen/html/classviennacl_1_1vector__iterator.png and /dev/null differ
diff --git a/doc/doxygen/html/closed.png b/doc/doxygen/html/closed.png
deleted file mode 100644
index b7d4bd9..0000000
Binary files a/doc/doxygen/html/closed.png and /dev/null differ
diff --git a/doc/doxygen/html/command__queue_8hpp.html b/doc/doxygen/html/command__queue_8hpp.html
deleted file mode 100644
index 33c82fa..0000000
--- a/doc/doxygen/html/command__queue_8hpp.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of command queue representations.
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <string></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="context_8hpp_source.html">viennacl/ocl/context.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-
-<p><a href="command__queue_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a command queue. <a href="classviennacl_1_1ocl_1_1command__queue.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of command queue representations. </p>
-<p>Represents an OpenCL context within ViennaCL.</p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/command__queue_8hpp_source.html b/doc/doxygen/html/command__queue_8hpp_source.html
deleted file mode 100644
index eb3c8c5..0000000
--- a/doc/doxygen/html/command__queue_8hpp_source.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/command_queue.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="command__queue_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COMMAND_QUEUE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMMAND_QUEUE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <string></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <sstream></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="context_8hpp.html">viennacl/ocl/context.hpp</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>viennacl
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>ocl
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039
-<a name="l00043"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html">00043</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a>
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keyword">public</span>:
-<a name="l00046"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">00046</a> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">command_queue</a>() {};
-<a name="l00047"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab6b585ec6f27ddcefe7fee6ffcb226d3">00047</a> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab6b585ec6f27ddcefe7fee6ffcb226d3">command_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> h, cl_device_id dev) : handle_(h) {}
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="comment">//Copy constructor:</span>
-<a name="l00050"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">00050</a> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#aba31105fa2a4846b873a623250654765">command_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a> <span class="keyword">const</span> & other)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 handle_ = other.handle_;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="comment">//assignment operator:</span>
-<a name="l00056"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">00056</a> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">operator=</a>(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a> <span class="keyword">const</span> & other)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 handle_ = other.handle_;
-<a name="l00059"></a>00059 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00063"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">00063</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>()<span class="keyword"> const</span>
-<a name="l00064"></a>00064 <span class="keyword"> </span>{
-<a name="l00065"></a>00065 clFinish(handle_);
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00069"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">00069</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed" title="Waits until all kernels in the queue have started their execution.">flush</a>()<span class="keyword"> const</span>
-<a name="l00070"></a>00070 <span class="keyword"> </span>{
-<a name="l00071"></a>00071 clFlush(handle_);
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">00074</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> handle_; }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keyword">private</span>:
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> handle_;
-<a name="l00079"></a>00079 };
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 } <span class="comment">//namespace ocl</span>
-<a name="l00084"></a>00084 } <span class="comment">//namespace viennacl</span>
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix_8hpp.html b/doc/doxygen/html/compressed__matrix_8hpp.html
deleted file mode 100644
index 40b0e11..0000000
--- a/doc/doxygen/html/compressed__matrix_8hpp.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the compressed_matrix class.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <list></code><br/>
-<code>#include <map></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix__operations_8hpp_source.html">viennacl/linalg/compressed_matrix_operations.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-
-<p><a href="compressed__matrix_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix in compressed sparse rows format. <a href="classviennacl_1_1compressed__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">copy</a> (const CPU_MATRIX &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). <a href="#a5684964ce1519c88a443aa14be9428f0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a25d1118aadbe1e6cb69b70df35f94763">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. <a href="#a25d1118aadbe1e6cb69b70df35f94763"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6b202ebcc6108940a59881c42f3d86da">copy</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. <a href="#a6b202ebcc6108940a59881c42f3d86da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a8a0feeb7a31a31f45e1d014512758fe6">copy</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . <a href="#a8a0feeb7a31a31f45e1d014512758fe6"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the compressed_matrix class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix_8hpp_source.html b/doc/doxygen/html/compressed__matrix_8hpp_source.html
deleted file mode 100644
index 27435cb..0000000
--- a/doc/doxygen/html/compressed__matrix_8hpp_source.html
+++ /dev/null
@@ -1,490 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/compressed_matrix.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <list></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <map></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a><a class="code" href="namespaceviennacl.html">00033</a> <span class="keyword">namespace </span>viennacl
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="comment">//provide copy-operation:</span>
-<a name="l00052"></a>00052 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00053"></a><a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">00053</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00054"></a>00054 <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="comment">//std::cout << "copy for (" << cpu_matrix.size1() << ", " << cpu_matrix.size2() << ", " << cpu_matrix.nnz() << ")" << std::endl;</span>
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="keywordflow">if</span> ( cpu_matrix.size1() > 0 && cpu_matrix.size2() > 0 )
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <span class="comment">//determine nonzeros:</span>
-<a name="l00061"></a>00061 <span class="keywordtype">long</span> num_entries = 0;
-<a name="l00062"></a>00062 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00063"></a>00063 row_it != cpu_matrix.end1();
-<a name="l00064"></a>00064 ++row_it)
-<a name="l00065"></a>00065 {
-<a name="l00066"></a>00066 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> entries_per_row = 0;
-<a name="l00067"></a>00067 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00068"></a>00068 col_it != row_it.end();
-<a name="l00069"></a>00069 ++col_it)
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 ++entries_per_row;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 num_entries += viennacl::tools::roundUpToNextMultiple<unsigned int>(entries_per_row, ALIGNMENT);
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (num_entries == 0) <span class="comment">//we copy an empty matrix</span>
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 num_entries = 1;
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="comment">//set up matrix entries:</span>
-<a name="l00082"></a>00082 std::vector<unsigned int> row_buffer(cpu_matrix.size1() + 1);
-<a name="l00083"></a>00083 std::vector<unsigned int> col_buffer(num_entries);
-<a name="l00084"></a>00084 std::vector<SCALARTYPE> elements(num_entries);
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row_index = 0;
-<a name="l00087"></a>00087 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00090"></a>00090 row_it != cpu_matrix.end1();
-<a name="l00091"></a>00091 ++row_it)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 row_buffer[row_index] = data_index;
-<a name="l00094"></a>00094 ++row_index;
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00097"></a>00097 col_it != row_it.end();
-<a name="l00098"></a>00098 ++col_it)
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 col_buffer[data_index] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(col_it.index2());
-<a name="l00101"></a>00101 elements[data_index] = *col_it;
-<a name="l00102"></a>00102 ++data_index;
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 data_index = viennacl::tools::roundUpToNextMultiple<unsigned int>(data_index, ALIGNMENT); <span class="comment">//take care of alignment</span>
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 row_buffer[row_index] = data_index;
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483" title="Sets the row, column and value arrays of the compressed matrix.">set</a>(&row_buffer[0], &col_buffer[0], &elements[0], static_cast<unsigned int>(cpu_matrix.size1()), num_entries);
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="comment">//adapted for std::vector< std::map < > > argument:</span>
-<a name="l00119"></a>00119 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00120"></a><a class="code" href="namespaceviennacl.html#a25d1118aadbe1e6cb69b70df35f94763">00120</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix,
-<a name="l00121"></a>00121 <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">tools::const_sparse_matrix_adapter<SCALARTYPE></a>(cpu_matrix), gpu_matrix);
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">int</span> flags, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00128"></a>00128 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> Eigen::SparseMatrix<SCALARTYPE, flags> & eigen_matrix,
-<a name="l00129"></a>00129 compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 std::vector< std::map<unsigned int, SCALARTYPE> > stl_matrix(eigen_matrix.rows());
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k=0; k < eigen_matrix.outerSize(); ++k)
-<a name="l00134"></a>00134 <span class="keywordflow">for</span> (<span class="keyword">typename</span> Eigen::SparseMatrix<SCALARTYPE, flags>::InnerIterator it(eigen_matrix, k); it; ++it)
-<a name="l00135"></a>00135 stl_matrix[it.row()][it.col()] = it.value();
-<a name="l00136"></a>00136
-<a name="l00137"></a>00137 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(tools::const_sparse_matrix_adapter<SCALARTYPE>(stl_matrix), gpu_matrix);
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 <span class="preprocessor"> #endif</span>
-<a name="l00140"></a>00140 <span class="preprocessor"></span>
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00143"></a>00143 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00144"></a>00144 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> mtl::compressed2D<SCALARTYPE> & cpu_matrix,
-<a name="l00145"></a>00145 compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix)
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="keyword">typedef</span> mtl::compressed2D<SCALARTYPE> MatrixType;
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 std::vector< std::map<unsigned int, SCALARTYPE> > stl_matrix(cpu_matrix.num_rows());
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="keyword">using</span> mtl::traits::range_generator;
-<a name="l00152"></a>00152 <span class="keyword">using</span> mtl::traits::range::min;
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="comment">// Choose between row and column traversal</span>
-<a name="l00155"></a>00155 <span class="keyword">typedef</span> <span class="keyword">typename</span> min<range_generator<mtl::tag::row, MatrixType>,
-<a name="l00156"></a>00156 range_generator<mtl::tag::col, MatrixType> >::type range_type;
-<a name="l00157"></a>00157 range_type my_range;
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="comment">// Type of outer cursor</span>
-<a name="l00160"></a>00160 <span class="keyword">typedef</span> <span class="keyword">typename</span> range_type::type c_type;
-<a name="l00161"></a>00161 <span class="comment">// Type of inner cursor</span>
-<a name="l00162"></a>00162 <span class="keyword">typedef</span> <span class="keyword">typename</span> mtl::traits::range_generator<mtl::tag::nz, c_type>::type ic_type;
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="comment">// Define the property maps</span>
-<a name="l00165"></a>00165 <span class="keyword">typename</span> mtl::traits::row<MatrixType>::type row(cpu_matrix);
-<a name="l00166"></a>00166 <span class="keyword">typename</span> mtl::traits::col<MatrixType>::type col(cpu_matrix);
-<a name="l00167"></a>00167 <span class="keyword">typename</span> mtl::traits::const_value<MatrixType>::type <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>(cpu_matrix);
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="comment">// Now iterate over the matrix </span>
-<a name="l00170"></a>00170 <span class="keywordflow">for</span> (c_type cursor(my_range.begin(cpu_matrix)), cend(my_range.end(cpu_matrix)); cursor != cend; ++cursor)
-<a name="l00171"></a>00171 <span class="keywordflow">for</span> (ic_type icursor(mtl::begin<mtl::tag::nz>(cursor)), icend(mtl::end<mtl::tag::nz>(cursor)); icursor != icend; ++icursor)
-<a name="l00172"></a>00172 stl_matrix[row(*icursor)][col(*icursor)] = <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>(*icursor);
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(tools::const_sparse_matrix_adapter<SCALARTYPE>(stl_matrix), gpu_matrix);
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176 <span class="preprocessor"> #endif</span>
-<a name="l00177"></a>00177 <span class="preprocessor"></span>
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 <span class="comment">//</span>
-<a name="l00185"></a>00185 <span class="comment">// gpu to cpu:</span>
-<a name="l00186"></a>00186 <span class="comment">//</span>
-<a name="l00196"></a>00196 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00197"></a><a class="code" href="namespaceviennacl.html#a6b202ebcc6108940a59881c42f3d86da">00197</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00198"></a>00198 CPU_MATRIX & cpu_matrix )
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200 <span class="keywordflow">if</span> ( gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() > 0 && gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() > 0 )
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 cpu_matrix.resize(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), <span class="keyword">false</span>);
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 <span class="comment">//get raw data from memory:</span>
-<a name="l00205"></a>00205 std::vector<unsigned int> row_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() + 1);
-<a name="l00206"></a>00206 std::vector<unsigned int> col_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00207"></a>00207 std::vector<SCALARTYPE> elements(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209 <span class="comment">//std::cout << "GPU->CPU, nonzeros: " << gpu_matrix.nnz() << std::endl;</span>
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 cl_int err;
-<a name="l00212"></a>00212 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*(gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() + 1), &(row_buffer[0]), 0, NULL, NULL);
-<a name="l00213"></a>00213 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00214"></a>00214 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>(), &(col_buffer[0]), 0, NULL, NULL);
-<a name="l00215"></a>00215 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00216"></a>00216 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>(), &(elements[0]), 0, NULL, NULL);
-<a name="l00217"></a>00217 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00218"></a>00218 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="comment">//fill the cpu_matrix:</span>
-<a name="l00221"></a>00221 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00222"></a>00222 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row = 1; row <= gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++row)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <span class="keywordflow">while</span> (data_index < row_buffer[row])
-<a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 <span class="keywordflow">if</span> (col_buffer[data_index] >= gpu_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>())
-<a name="l00227"></a>00227 {
-<a name="l00228"></a>00228 std::cerr << <span class="stringliteral">"ViennaCL encountered invalid data at colbuffer["</span> << data_index << <span class="stringliteral">"]: "</span> << col_buffer[data_index] << std::endl;
-<a name="l00229"></a>00229 <span class="keywordflow">return</span>;
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 <span class="keywordflow">if</span> (elements[data_index] != static_cast<SCALARTYPE>(0.0))
-<a name="l00233"></a>00233 cpu_matrix(row-1, col_buffer[data_index]) = elements[data_index];
-<a name="l00234"></a>00234 ++data_index;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236 }
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238 }
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240
-<a name="l00246"></a>00246 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00247"></a><a class="code" href="namespaceviennacl.html#a8a0feeb7a31a31f45e1d014512758fe6">00247</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00248"></a>00248 std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">tools::sparse_matrix_adapter<SCALARTYPE></a> temp(cpu_matrix);
-<a name="l00251"></a>00251 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(gpu_matrix, temp);
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00256"></a>00256 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">int</span> flags, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00257"></a>00257 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix,
-<a name="l00258"></a>00258 Eigen::SparseMatrix<SCALARTYPE, flags> & eigen_matrix)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> ( gpu_matrix.size1() > 0 && gpu_matrix.size2() > 0 )
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 assert(static_cast<unsigned int>(eigen_matrix.rows()) >= gpu_matrix.size1()
-<a name="l00263"></a>00263 && <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(eigen_matrix.cols()) >= gpu_matrix.size2()
-<a name="l00264"></a>00264 && <span class="stringliteral">"Provided Eigen compressed matrix is too small!"</span>);
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266 <span class="comment">//get raw data from memory:</span>
-<a name="l00267"></a>00267 std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
-<a name="l00268"></a>00268 std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
-<a name="l00269"></a>00269 std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 cl_int err;
-<a name="l00272"></a>00272 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle1(),
-<a name="l00273"></a>00273 CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
-<a name="l00274"></a>00274 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00275"></a>00275 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle2(),
-<a name="l00276"></a>00276 CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
-<a name="l00277"></a>00277 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00278"></a>00278 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(),
-<a name="l00279"></a>00279 CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
-<a name="l00280"></a>00280 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00281"></a>00281 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283 eigen_matrix.setZero();
-<a name="l00284"></a>00284 eigen_matrix.startFill();
-<a name="l00285"></a>00285 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00286"></a>00286 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row = 1; row <= gpu_matrix.size1(); ++row)
-<a name="l00287"></a>00287 {
-<a name="l00288"></a>00288 <span class="keywordflow">while</span> (data_index < row_buffer[row])
-<a name="l00289"></a>00289 {
-<a name="l00290"></a>00290 assert(col_buffer[data_index] < gpu_matrix.size2() && <span class="stringliteral">"ViennaCL encountered invalid data at col_buffer"</span>);
-<a name="l00291"></a>00291 <span class="keywordflow">if</span> (elements[data_index] != static_cast<SCALARTYPE>(0.0))
-<a name="l00292"></a>00292 eigen_matrix.fill(row-1, col_buffer[data_index]) = elements[data_index];
-<a name="l00293"></a>00293 ++data_index;
-<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 }
-<a name="l00296"></a>00296 eigen_matrix.endFill();
-<a name="l00297"></a>00297 }
-<a name="l00298"></a>00298 }
-<a name="l00299"></a>00299 <span class="preprocessor"> #endif</span>
-<a name="l00300"></a>00300 <span class="preprocessor"></span>
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00304"></a>00304 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00305"></a>00305 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(compressed_matrix<SCALARTYPE, ALIGNMENT> & gpu_matrix,
-<a name="l00306"></a>00306 mtl::compressed2D<SCALARTYPE> & mtl4_matrix)
-<a name="l00307"></a>00307 {
-<a name="l00308"></a>00308 <span class="keywordflow">if</span> ( gpu_matrix.size1() > 0 && gpu_matrix.size2() > 0 )
-<a name="l00309"></a>00309 {
-<a name="l00310"></a>00310 assert(mtl4_matrix.num_rows() >= gpu_matrix.size1()
-<a name="l00311"></a>00311 && mtl4_matrix.num_cols() >= gpu_matrix.size2()
-<a name="l00312"></a>00312 && <span class="stringliteral">"Provided MTL4 compressed matrix is too small!"</span>);
-<a name="l00313"></a>00313
-<a name="l00314"></a>00314 <span class="comment">//get raw data from memory:</span>
-<a name="l00315"></a>00315 std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
-<a name="l00316"></a>00316 std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
-<a name="l00317"></a>00317 std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
-<a name="l00318"></a>00318
-<a name="l00319"></a>00319 cl_int err;
-<a name="l00320"></a>00320 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle1(),
-<a name="l00321"></a>00321 CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
-<a name="l00322"></a>00322 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00323"></a>00323 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.handle2(),
-<a name="l00324"></a>00324 CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
-<a name="l00325"></a>00325 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00326"></a>00326 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(),
-<a name="l00327"></a>00327 CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
-<a name="l00328"></a>00328 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00329"></a>00329 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00330"></a>00330
-<a name="l00331"></a>00331 <span class="comment">//set_to_zero(mtl4_matrix); </span>
-<a name="l00332"></a>00332 <span class="comment">//mtl4_matrix.change_dim(gpu_matrix.size1(), gpu_matrix.size2());</span>
-<a name="l00333"></a>00333
-<a name="l00334"></a>00334 mtl::matrix::inserter< mtl::compressed2D<SCALARTYPE> > ins(mtl4_matrix);
-<a name="l00335"></a>00335 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00336"></a>00336 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row = 1; row <= gpu_matrix.size1(); ++row)
-<a name="l00337"></a>00337 {
-<a name="l00338"></a>00338 <span class="keywordflow">while</span> (data_index < row_buffer[row])
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 assert(col_buffer[data_index] < gpu_matrix.size2() && <span class="stringliteral">"ViennaCL encountered invalid data at col_buffer"</span>);
-<a name="l00341"></a>00341 <span class="keywordflow">if</span> (elements[data_index] != static_cast<SCALARTYPE>(0.0))
-<a name="l00342"></a>00342 ins(row-1, col_buffer[data_index]) << <span class="keyword">typename</span> mtl::Collection< mtl::compressed2D<SCALARTYPE> >::value_type(elements[data_index]);
-<a name="l00343"></a>00343 ++data_index;
-<a name="l00344"></a>00344 }
-<a name="l00345"></a>00345 }
-<a name="l00346"></a>00346 }
-<a name="l00347"></a>00347 }
-<a name="l00348"></a>00348 <span class="preprocessor"> #endif</span>
-<a name="l00349"></a>00349 <span class="preprocessor"></span>
-<a name="l00350"></a>00350
-<a name="l00351"></a>00351
-<a name="l00352"></a>00352
-<a name="l00353"></a>00353
-<a name="l00355"></a>00355
-<a name="l00360"></a>00360 <span class="keyword">template</span><<span class="keyword">class </span>SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT <span class="comment">/* see VCLForwards.h */</span>>
-<a name="l00361"></a><a class="code" href="classviennacl_1_1compressed__matrix.html">00361</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>
-<a name="l00362"></a>00362 {
-<a name="l00363"></a>00363 <span class="keyword">public</span>:
-<a name="l00364"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">00364</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00365"></a>00365
-<a name="l00367"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">00367</a> <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>() : _rows(0), _cols(0), _nonzeros(0) { viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, ALIGNMENT>::init(); }
-<a name="l00368"></a>00368
-<a name="l00375"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a3ba96c743010a59262c8a0d8a18bc87f">00375</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros = 0) :
-<a name="l00376"></a>00376 _rows(rows), _cols(cols), _nonzeros(nonzeros)
-<a name="l00377"></a>00377 {
-<a name="l00378"></a>00378 viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, ALIGNMENT>::init();
-<a name="l00379"></a>00379
-<a name="l00380"></a>00380 <span class="keywordflow">if</span> (rows > 0)
-<a name="l00381"></a>00381 _row_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * rows);
-<a name="l00382"></a>00382 <span class="keywordflow">if</span> (nonzeros > 0)
-<a name="l00383"></a>00383 {
-<a name="l00384"></a>00384 _col_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * nonzeros);
-<a name="l00385"></a>00385 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * nonzeros);
-<a name="l00386"></a>00386 }
-<a name="l00387"></a>00387 }
-<a name="l00388"></a>00388
-<a name="l00389"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a9d9605472ab231ce31949eb09938d72d">00389</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros) :
-<a name="l00390"></a>00390 _rows(rows), _cols(cols), _nonzeros(nonzeros)
-<a name="l00391"></a>00391 {
-<a name="l00392"></a>00392 _row_buffer = mem_row_buffer;
-<a name="l00393"></a>00393 _row_buffer.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00394"></a>00394 _col_buffer = mem_col_buffer;
-<a name="l00395"></a>00395 _col_buffer.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00396"></a>00396 _elements = mem_elements;
-<a name="l00397"></a>00397 _elements.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00398"></a>00398 }
-<a name="l00399"></a>00399
-<a name="l00400"></a>00400
-<a name="l00409"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">00409</a> <span class="keywordtype">void</span> <span class="keyword">set</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * row_jumper, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> * col_buffer, SCALARTYPE * elements, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros)
-<a name="l00410"></a>00410 {
-<a name="l00411"></a>00411 assert(cols > 0);
-<a name="l00412"></a>00412 assert(nonzeros > 0);
-<a name="l00413"></a>00413 <span class="comment">//std::cout << "Setting memory: " << cols + 1 << ", " << nonzeros << std::endl;</span>
-<a name="l00414"></a>00414 _row_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * (cols + 1), row_jumper);
-<a name="l00415"></a>00415 _col_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * nonzeros, col_buffer);
-<a name="l00416"></a>00416 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * nonzeros, elements);
-<a name="l00417"></a>00417 _nonzeros = nonzeros;
-<a name="l00418"></a>00418 _rows = cols;
-<a name="l00419"></a>00419 _cols = cols;
-<a name="l00420"></a>00420 }
-<a name="l00421"></a>00421
-<a name="l00423"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">00423</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1" title="Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved...">reserve</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_nonzeros)
-<a name="l00424"></a>00424 {
-<a name="l00425"></a>00425 <span class="keywordflow">if</span> (new_nonzeros > _nonzeros)
-<a name="l00426"></a>00426 {
-<a name="l00427"></a>00427 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _col_buffer_old = _col_buffer;
-<a name="l00428"></a>00428 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _elements_old = _elements;
-<a name="l00429"></a>00429 _col_buffer = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) * new_nonzeros);
-<a name="l00430"></a>00430 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * new_nonzeros);
-<a name="l00431"></a>00431
-<a name="l00432"></a>00432 cl_int err;
-<a name="l00433"></a>00433 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), _col_buffer_old, _col_buffer, 0, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)*_nonzeros, 0, NULL, NULL);
-<a name="l00434"></a>00434 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00435"></a>00435 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), _elements_old, _elements, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*_nonzeros, 0, NULL, NULL);
-<a name="l00436"></a>00436 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00437"></a>00437
-<a name="l00438"></a>00438 _nonzeros = new_nonzeros;
-<a name="l00439"></a>00439 }
-<a name="l00440"></a>00440 }
-<a name="l00441"></a>00441
-<a name="l00448"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">00448</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25" title="Resize the matrix.">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size2, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00449"></a>00449 {
-<a name="l00450"></a>00450 assert(new_size1 > 0 && new_size2 > 0);
-<a name="l00451"></a>00451 <span class="comment">//std::cout << "Resizing from (" << _rows << ", " << _cols << ") to (" << new_size1 << ", " << new_size2 << ")" << std::endl;</span>
-<a name="l00452"></a>00452
-<a name="l00453"></a>00453 <span class="keywordflow">if</span> (new_size1 != _rows || new_size2 != _cols)
-<a name="l00454"></a>00454 {
-<a name="l00455"></a>00455 std::vector<std::map<unsigned int, SCALARTYPE> > stl_sparse_matrix;
-<a name="l00456"></a>00456 <span class="keywordflow">if</span> (_rows > 0)
-<a name="l00457"></a>00457 stl_sparse_matrix.resize(_rows);
-<a name="l00458"></a>00458
-<a name="l00459"></a>00459 <span class="keywordflow">if</span> (preserve && _rows > 0)
-<a name="l00460"></a>00460 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(*<span class="keyword">this</span>, stl_sparse_matrix);
-<a name="l00461"></a>00461
-<a name="l00462"></a>00462 stl_sparse_matrix.resize(new_size1);
-<a name="l00463"></a>00463
-<a name="l00464"></a>00464 <span class="comment">//discard entries with column index larger than new_size2</span>
-<a name="l00465"></a>00465 <span class="keywordflow">if</span> (new_size2 < _cols && _rows > 0)
-<a name="l00466"></a>00466 {
-<a name="l00467"></a>00467 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<stl_sparse_matrix.size(); ++i)
-<a name="l00468"></a>00468 {
-<a name="l00469"></a>00469 std::list<unsigned int> to_delete;
-<a name="l00470"></a>00470 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::iterator it = stl_sparse_matrix[i].begin();
-<a name="l00471"></a>00471 it != stl_sparse_matrix[i].end();
-<a name="l00472"></a>00472 ++it)
-<a name="l00473"></a>00473 {
-<a name="l00474"></a>00474 <span class="keywordflow">if</span> (it->first >= new_size2)
-<a name="l00475"></a>00475 to_delete.push_back(it->first);
-<a name="l00476"></a>00476 }
-<a name="l00477"></a>00477
-<a name="l00478"></a>00478 <span class="keywordflow">for</span> (std::list<unsigned int>::iterator it = to_delete.begin(); it != to_delete.end(); ++it)
-<a name="l00479"></a>00479 stl_sparse_matrix[i].erase(*it);
-<a name="l00480"></a>00480 }
-<a name="l00481"></a>00481 }
-<a name="l00482"></a>00482
-<a name="l00483"></a>00483 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(stl_sparse_matrix, *<span class="keyword">this</span>);
-<a name="l00484"></a>00484
-<a name="l00485"></a>00485 _rows = new_size1;
-<a name="l00486"></a>00486 _cols = new_size2;
-<a name="l00487"></a>00487 }
-<a name="l00488"></a>00488 }
-<a name="l00489"></a>00489
-<a name="l00491"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">00491</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rows; }
-<a name="l00493"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">00493</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _cols; }
-<a name="l00495"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">00495</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6" title="Returns the number of nonzero entries.">nnz</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _nonzeros; }
-<a name="l00496"></a>00496
-<a name="l00498"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">00498</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _row_buffer; }
-<a name="l00500"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">00500</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _col_buffer; }
-<a name="l00502"></a><a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">00502</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _elements; }
-<a name="l00503"></a>00503
-<a name="l00504"></a>00504 <span class="keyword">private</span>:
-<a name="l00506"></a>00506 <a class="code" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00" title="Default construction of a compressed matrix. No memory is allocated.">compressed_matrix</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> <span class="keyword">const</span> &);
-<a name="l00507"></a>00507
-<a name="l00509"></a>00509 <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> & operator=(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> <span class="keyword">const</span> &);
-<a name="l00510"></a>00510
-<a name="l00511"></a>00511
-<a name="l00512"></a>00512 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _rows;
-<a name="l00513"></a>00513 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _cols;
-<a name="l00514"></a>00514 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _nonzeros;
-<a name="l00515"></a>00515 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _row_buffer;
-<a name="l00516"></a>00516 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _col_buffer;
-<a name="l00517"></a>00517 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _elements;
-<a name="l00518"></a>00518 };
-<a name="l00519"></a>00519
-<a name="l00520"></a>00520
-<a name="l00521"></a>00521
-<a name="l00522"></a>00522
-<a name="l00523"></a>00523 }
-<a name="l00524"></a>00524
-<a name="l00525"></a>00525 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__kernels_8h.html b/doc/doxygen/html/compressed__matrix__kernels_8h.html
deleted file mode 100644
index 29b6b6e..0000000
--- a/doc/doxygen/html/compressed__matrix__kernels_8h.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix__source_8h_source.html">viennacl/linalg/kernels/compressed_matrix_source.h</a>"</code><br/>
-
-<p><a href="compressed__matrix__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__kernels_8h_source.html b/doc/doxygen/html/compressed__matrix__kernels_8h_source.html
deleted file mode 100644
index 2575aa5..0000000
--- a/doc/doxygen/html/compressed__matrix__kernels_8h_source.html
+++ /dev/null
@@ -1,318 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="compressed__matrix__source_8h.html">viennacl/linalg/kernels/compressed_matrix_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html">00014</a> <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">00022</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><float, 4>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_compressed_matrix_4"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>);
-<a name="l00044"></a>00044 std::string prog_name = program_name();
-<a name="l00045"></a>00045 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00047"></a>00047 <span class="preprocessor"> #endif</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00049"></a>00049 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00050"></a>00050 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00051"></a>00051 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00052"></a>00052 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00053"></a>00053 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00054"></a>00054 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00055"></a>00055 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00056"></a>00056 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00057"></a>00057 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00058"></a>00058 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00059"></a>00059 } <span class="comment">//if</span>
-<a name="l00060"></a>00060 } <span class="comment">//init</span>
-<a name="l00061"></a>00061 }; <span class="comment">// struct</span>
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">template</span> <>
-<a name="l00064"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">00064</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><float, 1>
-<a name="l00065"></a>00065 {
-<a name="l00066"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00066</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> <span class="stringliteral">"f_compressed_matrix_1"</span>;
-<a name="l00069"></a>00069 }
-<a name="l00070"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00070</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00073"></a>00073 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00074"></a>00074 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 std::string source;
-<a name="l00078"></a>00078 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a>);
-<a name="l00079"></a>00079 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>);
-<a name="l00080"></a>00080 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>);
-<a name="l00081"></a>00081 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>);
-<a name="l00082"></a>00082 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>);
-<a name="l00083"></a>00083 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>);
-<a name="l00084"></a>00084 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>);
-<a name="l00085"></a>00085 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>);
-<a name="l00086"></a>00086 std::string prog_name = program_name();
-<a name="l00087"></a>00087 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00088"></a>00088 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00089"></a>00089 <span class="preprocessor"> #endif</span>
-<a name="l00090"></a>00090 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00091"></a>00091 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00092"></a>00092 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00093"></a>00093 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00094"></a>00094 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00095"></a>00095 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00096"></a>00096 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00097"></a>00097 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00098"></a>00098 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00099"></a>00099 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00100"></a>00100 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00101"></a>00101 } <span class="comment">//if</span>
-<a name="l00102"></a>00102 } <span class="comment">//init</span>
-<a name="l00103"></a>00103 }; <span class="comment">// struct</span>
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keyword">template</span> <>
-<a name="l00106"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">00106</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><float, 8>
-<a name="l00107"></a>00107 {
-<a name="l00108"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">00108</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00109"></a>00109 {
-<a name="l00110"></a>00110 <span class="keywordflow">return</span> <span class="stringliteral">"f_compressed_matrix_8"</span>;
-<a name="l00111"></a>00111 }
-<a name="l00112"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">00112</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00115"></a>00115 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00116"></a>00116 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00118"></a>00118 {
-<a name="l00119"></a>00119 std::string source;
-<a name="l00120"></a>00120 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a>);
-<a name="l00121"></a>00121 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>);
-<a name="l00122"></a>00122 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>);
-<a name="l00123"></a>00123 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>);
-<a name="l00124"></a>00124 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>);
-<a name="l00125"></a>00125 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>);
-<a name="l00126"></a>00126 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>);
-<a name="l00127"></a>00127 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>);
-<a name="l00128"></a>00128 std::string prog_name = program_name();
-<a name="l00129"></a>00129 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00130"></a>00130 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00131"></a>00131 <span class="preprocessor"> #endif</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00133"></a>00133 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00136"></a>00136 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00137"></a>00137 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00138"></a>00138 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00139"></a>00139 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00140"></a>00140 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00141"></a>00141 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00142"></a>00142 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00143"></a>00143 } <span class="comment">//if</span>
-<a name="l00144"></a>00144 } <span class="comment">//init</span>
-<a name="l00145"></a>00145 }; <span class="comment">// struct</span>
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148
-<a name="l00150"></a>00150 <span class="keyword">template</span> <>
-<a name="l00151"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">00151</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><double, 4>
-<a name="l00152"></a>00152 {
-<a name="l00153"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00153</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00154"></a>00154 {
-<a name="l00155"></a>00155 <span class="keywordflow">return</span> <span class="stringliteral">"d_compressed_matrix_4"</span>;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00157</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00160"></a>00160 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00161"></a>00161 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00162"></a>00162 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 std::string source;
-<a name="l00165"></a>00165 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00166"></a>00166 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a>, fp64_ext));
-<a name="l00167"></a>00167 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>, fp64_ext));
-<a name="l00168"></a>00168 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>, fp64_ext));
-<a name="l00169"></a>00169 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>, fp64_ext));
-<a name="l00170"></a>00170 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>, fp64_ext));
-<a name="l00171"></a>00171 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>, fp64_ext));
-<a name="l00172"></a>00172 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>, fp64_ext));
-<a name="l00173"></a>00173 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>, fp64_ext));
-<a name="l00174"></a>00174 std::string prog_name = program_name();
-<a name="l00175"></a>00175 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00176"></a>00176 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00177"></a>00177 <span class="preprocessor"> #endif</span>
-<a name="l00178"></a>00178 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00179"></a>00179 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00180"></a>00180 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00181"></a>00181 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00182"></a>00182 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00183"></a>00183 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00184"></a>00184 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00185"></a>00185 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00186"></a>00186 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00187"></a>00187 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00188"></a>00188 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00189"></a>00189 } <span class="comment">//if</span>
-<a name="l00190"></a>00190 } <span class="comment">//init</span>
-<a name="l00191"></a>00191 }; <span class="comment">// struct</span>
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="keyword">template</span> <>
-<a name="l00194"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">00194</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><double, 1>
-<a name="l00195"></a>00195 {
-<a name="l00196"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00196</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> <span class="stringliteral">"d_compressed_matrix_1"</span>;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00200</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00203"></a>00203 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00204"></a>00204 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00206"></a>00206 {
-<a name="l00207"></a>00207 std::string source;
-<a name="l00208"></a>00208 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00209"></a>00209 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a>, fp64_ext));
-<a name="l00210"></a>00210 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>, fp64_ext));
-<a name="l00211"></a>00211 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>, fp64_ext));
-<a name="l00212"></a>00212 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>, fp64_ext));
-<a name="l00213"></a>00213 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>, fp64_ext));
-<a name="l00214"></a>00214 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>, fp64_ext));
-<a name="l00215"></a>00215 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>, fp64_ext));
-<a name="l00216"></a>00216 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>, fp64_ext));
-<a name="l00217"></a>00217 std::string prog_name = program_name();
-<a name="l00218"></a>00218 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00219"></a>00219 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00220"></a>00220 <span class="preprocessor"> #endif</span>
-<a name="l00221"></a>00221 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00222"></a>00222 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00223"></a>00223 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00224"></a>00224 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00225"></a>00225 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00226"></a>00226 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00227"></a>00227 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00228"></a>00228 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00229"></a>00229 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00230"></a>00230 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00231"></a>00231 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00232"></a>00232 } <span class="comment">//if</span>
-<a name="l00233"></a>00233 } <span class="comment">//init</span>
-<a name="l00234"></a>00234 }; <span class="comment">// struct</span>
-<a name="l00235"></a>00235
-<a name="l00236"></a>00236 <span class="keyword">template</span> <>
-<a name="l00237"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">00237</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><double, 8>
-<a name="l00238"></a>00238 {
-<a name="l00239"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">00239</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 <span class="keywordflow">return</span> <span class="stringliteral">"d_compressed_matrix_8"</span>;
-<a name="l00242"></a>00242 }
-<a name="l00243"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">00243</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00244"></a>00244 {
-<a name="l00245"></a>00245 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00246"></a>00246 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00247"></a>00247 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 std::string source;
-<a name="l00251"></a>00251 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00252"></a>00252 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a>, fp64_ext));
-<a name="l00253"></a>00253 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a>, fp64_ext));
-<a name="l00254"></a>00254 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a>, fp64_ext));
-<a name="l00255"></a>00255 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a>, fp64_ext));
-<a name="l00256"></a>00256 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a>, fp64_ext));
-<a name="l00257"></a>00257 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a>, fp64_ext));
-<a name="l00258"></a>00258 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a>, fp64_ext));
-<a name="l00259"></a>00259 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a>, fp64_ext));
-<a name="l00260"></a>00260 std::string prog_name = program_name();
-<a name="l00261"></a>00261 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00262"></a>00262 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00263"></a>00263 <span class="preprocessor"> #endif</span>
-<a name="l00264"></a>00264 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00265"></a>00265 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00266"></a>00266 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00267"></a>00267 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00268"></a>00268 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00269"></a>00269 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00270"></a>00270 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_forward"</span>);
-<a name="l00271"></a>00271 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel2"</span>);
-<a name="l00272"></a>00272 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_backward"</span>);
-<a name="l00273"></a>00273 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"bicgstab_kernel1"</span>);
-<a name="l00274"></a>00274 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00275"></a>00275 } <span class="comment">//if</span>
-<a name="l00276"></a>00276 } <span class="comment">//init</span>
-<a name="l00277"></a>00277 }; <span class="comment">// struct</span>
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279
-<a name="l00280"></a>00280 } <span class="comment">//namespace kernels</span>
-<a name="l00281"></a>00281 } <span class="comment">//namespace linalg</span>
-<a name="l00282"></a>00282 } <span class="comment">//namespace viennacl</span>
-<a name="l00283"></a>00283 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__operations_8hpp.html b/doc/doxygen/html/compressed__matrix__operations_8hpp.html
deleted file mode 100644
index b3b548d..0000000
--- a/doc/doxygen/html/compressed__matrix__operations_8hpp.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of operations using compressed_matrix.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix__kernels_8h_source.html">viennacl/linalg/kernels/compressed_matrix_kernels.h</a>"</code><br/>
-
-<p><a href="compressed__matrix__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">prod_impl</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#aa965a1bc156b037f57b6a449dde4c7d1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a469b22e14078bba1451afb09bbd2f7cc">prod_impl</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result, size_t NUM_THREADS=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a469b22e14078bba1451afb09bbd2f7cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210">inplace_solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a lower triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> with unit diagonal. Typically used for LU substitutions. <a href="#ae927d6abe755d74744ec5ee9bd191210"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6d7d0a974cd68a51c4d5c4b7a16c1d28">solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, const <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a6d7d0a974cd68a51c4d5c4b7a16c1d28"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa3a114636b1b542dfb42f48d2a0200a">inplace_solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &U, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a upper triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. Typically used for LU substitutions. <a href="#aaa3a114636b1b542dfb42f48d2a0200a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa338acd99f7bfac8c0210ab05ecaa09">solve</a> (compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#aaa338acd99f7bfac8c0210ab05ecaa09"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of operations using compressed_matrix. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__operations_8hpp_source.html b/doc/doxygen/html/compressed__matrix__operations_8hpp_source.html
deleted file mode 100644
index 87a4eb0..0000000
--- a/doc/doxygen/html/compressed__matrix__operations_8hpp_source.html
+++ /dev/null
@@ -1,238 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/compressed_matrix_operations.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="compressed__matrix__kernels_8h.html">viennacl/linalg/kernels/compressed_matrix_kernels.h</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="comment">// A * x</span>
-<a name="l00043"></a>00043 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00044"></a>00044 vector_expression<const compressed_matrix<SCALARTYPE, ALIGNMENT>,
-<a name="l00045"></a>00045 <span class="keyword">const</span> vector<SCALARTYPE, VECTOR_ALIGNMENT>,
-<a name="l00046"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">00046</a> op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, ALIGNMENT></a> & mat,
-<a name="l00047"></a>00047 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression<const compressed_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00050"></a>00050 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00051"></a>00051 op_prod >(mat, vec);
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00063"></a>00063 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a469b22e14078bba1451afb09bbd2f7cc">00064</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">viennacl::compressed_matrix<TYPE, ALIGNMENT></a> & mat,
-<a name="l00065"></a>00065 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00066"></a>00066 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & result,
-<a name="l00067"></a>00067 <span class="keywordtype">size_t</span> NUM_THREADS = 0)
-<a name="l00068"></a>00068 {
-<a name="l00069"></a>00069 assert(mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00070"></a>00070 assert(mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::compressed_matrix<TYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"vec_mul"</span>);
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), vec, result, mat.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()));
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076
-<a name="l00082"></a>00082 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT>
-<a name="l00083"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210">00083</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & L, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">viennacl::linalg::unit_lower_tag</a>)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, MAT_ALIGNMENT>::program_name(), <span class="stringliteral">"lu_forward"</span>);
-<a name="l00086"></a>00086 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> threads = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00089"></a>00089 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(L.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), L.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), L,
-<a name="l00090"></a>00090 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>) * (threads+1)),
-<a name="l00091"></a>00091 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * threads),
-<a name="l00092"></a>00092 vec, L.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()));
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00101"></a>00101 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00102"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6d7d0a974cd68a51c4d5c4b7a16c1d28">00102</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & L,
-<a name="l00103"></a>00103 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00104"></a>00104 <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">viennacl::linalg::unit_lower_tag</a> & tag)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00107"></a>00107 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00108"></a>00108 result = vec;
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(L, result, tag);
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> result;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115
-<a name="l00121"></a>00121 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT>
-<a name="l00122"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aaa3a114636b1b542dfb42f48d2a0200a">00122</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & U, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">viennacl::linalg::upper_tag</a>)
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, MAT_ALIGNMENT>::program_name(), <span class="stringliteral">"lu_backward"</span>);
-<a name="l00125"></a>00125 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> threads = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00128"></a>00128 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(U.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), U.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), U.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(),
-<a name="l00129"></a>00129 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(<span class="keywordtype">int</span>) * (threads+2)),
-<a name="l00130"></a>00130 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * (threads+2)),
-<a name="l00131"></a>00131 vec, U.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()));
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133
-<a name="l00140"></a>00140 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00141"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aaa338acd99f7bfac8c0210ab05ecaa09">00141</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a> <span class="keyword">const</span> & L,
-<a name="l00142"></a>00142 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00143"></a>00143 <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">viennacl::linalg::upper_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00146"></a>00146 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00147"></a>00147 result = vec;
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(L, result, tag);
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="keywordflow">return</span> result;
-<a name="l00152"></a>00152 }
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 } <span class="comment">//namespace linalg</span>
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="comment">//v = A * x</span>
-<a name="l00164"></a>00164 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00165"></a>00165 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00166"></a>00166 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00167"></a><a class="code" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">00167</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00168"></a>00168 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00169"></a>00169 viennacl::op_prod> & proxy)
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <span class="comment">// check for the special case x = A * x</span>
-<a name="l00172"></a>00172 <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00175"></a>00175 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00176"></a>00176 *<span class="keyword">this</span> = result;
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179 <span class="keywordflow">else</span>
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <span class="comment">//v += A * x</span>
-<a name="l00192"></a>00192 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00193"></a>00193 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00194"></a>00194 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00195"></a><a class="code" href="classviennacl_1_1vector.html#a6a36ddeab9a741c125c9d9d4d49f0e77">00195</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00196"></a>00196 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00197"></a>00197 op_prod> & proxy)
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00200"></a>00200 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00201"></a>00201 *<span class="keyword">this</span> += result;
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00209"></a>00209 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00210"></a>00210 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00211"></a>00211 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00212"></a><a class="code" href="classviennacl_1_1vector.html#a26f886c3b1df2ffa849ad9ab2e9e4fe2">00212</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00213"></a>00213 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00214"></a>00214 op_prod> & proxy)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00217"></a>00217 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00218"></a>00218 *<span class="keyword">this</span> -= result;
-<a name="l00219"></a>00219 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00220"></a>00220 }
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 <span class="comment">//free functions:</span>
-<a name="l00228"></a>00228 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00229"></a>00229 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00230"></a>00230 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00231"></a><a class="code" href="classviennacl_1_1vector.html#a34b711b607f3675c773b2c4db62b2c67">00231</a> <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00232"></a>00232 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00233"></a>00233 op_prod> & proxy)
-<a name="l00234"></a>00234 {
-<a name="l00235"></a>00235 assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00236"></a>00236 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00237"></a>00237 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00238"></a>00238 result += *<span class="keyword">this</span>;
-<a name="l00239"></a>00239 <span class="keywordflow">return</span> result;
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241
-<a name="l00246"></a>00246 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00247"></a>00247 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00248"></a>00248 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00249"></a><a class="code" href="classviennacl_1_1vector.html#aaa7f595ff02bf1124f5c5e45fad08896">00249</a> <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00250"></a>00250 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00251"></a>00251 op_prod> & proxy)
-<a name="l00252"></a>00252 {
-<a name="l00253"></a>00253 assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00254"></a>00254 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00255"></a>00255 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00256"></a>00256 result = *<span class="keyword">this</span> - result;
-<a name="l00257"></a>00257 <span class="keywordflow">return</span> result;
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__source_8h.html b/doc/doxygen/html/compressed__matrix__source_8h.html
deleted file mode 100644
index c705657..0000000
--- a/doc/doxygen/html/compressed__matrix__source_8h.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="compressed__matrix__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/compressed__matrix__source_8h_source.html b/doc/doxygen/html/compressed__matrix__source_8h_source.html
deleted file mode 100644
index 9c9b5f5..0000000
--- a/doc/doxygen/html/compressed__matrix__source_8h_source.html
+++ /dev/null
@@ -1,541 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/compressed_matrix_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="compressed__matrix__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">" __global const uint4 * column_indices, \n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">" __global const float4 * elements,\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int size)\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"{ \n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" float dot_prod;\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" unsigned int start, next_stop;\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" uint4 col_idx;\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" float4 tmp_vec;\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" float4 tmp_entries;\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" {\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" dot_prod = 0.0f;\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" start = row_indices[row] / 4;\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" next_stop = row_indices[row+1] / 4;\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" for (unsigned int i = start; i < next_stop; ++i)\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" {\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" col_idx = column_indices[i];\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" tmp_entries = elements[i];\n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" tmp_vec.x = vector[col_idx.x];\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" tmp_vec.y = vector[col_idx.y];\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" tmp_vec.z = vector[col_idx.z];\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" tmp_vec.w = vector[col_idx.w];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" dot_prod += dot(tmp_entries, tmp_vec);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" }\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" result[row] = dot_prod;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" }\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">"}\n"</span>
-<a name="l00042"></a>00042 ; <span class="comment">//compressed_matrix_align4_vec_mul</span>
-<a name="l00043"></a>00043
-<a name="l00044"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">00044</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> =
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" __global const unsigned int * column_indices, \n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" __global const float * elements,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"{ \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" {\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" float dot_prod = 0.0f;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" dot_prod += elements[i] * vector[column_indices[i]];\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" result[row] = dot_prod;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" }\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"}\n"</span>
-<a name="l00062"></a>00062 ; <span class="comment">//compressed_matrix_align1_vec_mul</span>
-<a name="l00063"></a>00063
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">00064</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> =
-<a name="l00065"></a>00065 <span class="stringliteral">"__kernel void row_scaling_2(\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" __global const unsigned int * column_indices, \n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" __global const float * elements,\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">" __global float * diag_M_inv,\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">"{ \n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">" {\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">" float dot_prod = 0.0f;\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">" float temp = 0.0f;\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">" unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" {\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" temp = elements[i];\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" dot_prod += temp * temp;\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" }\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" diag_M_inv[row] = 1.0f / sqrt(dot_prod);\n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" }\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">"}\n"</span>
-<a name="l00085"></a>00085 ; <span class="comment">//compressed_matrix_align1_row_scaling_2</span>
-<a name="l00086"></a>00086
-<a name="l00087"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">00087</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> =
-<a name="l00088"></a>00088 <span class="stringliteral">"__kernel void jacobi_precond(\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" __global const unsigned int * column_indices, \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" __global const float * elements,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __global float * diag_M_inv,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" {\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" float diag = 1.0f;\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" {\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" if (row == column_indices[i])\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" {\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" diag = elements[i];\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" break;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" }\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" }\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" diag_M_inv[row] = 1.0f / diag;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" }\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">"}\n"</span>
-<a name="l00110"></a>00110 ; <span class="comment">//compressed_matrix_align1_jacobi_precond</span>
-<a name="l00111"></a>00111
-<a name="l00112"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">00112</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> =
-<a name="l00113"></a>00113 <span class="stringliteral">"__kernel void row_scaling_1(\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" __global const unsigned int * column_indices, \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" __global const float * elements,\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" __global float * diag_M_inv,\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"{ \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" {\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" float dot_prod = 0.0f;\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" unsigned int row_end = row_indices[row+1];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" dot_prod += fabs(elements[i]);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" diag_M_inv[row] = 1.0f / dot_prod;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" }\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">"}\n"</span>
-<a name="l00129"></a>00129 ; <span class="comment">//compressed_matrix_align1_row_scaling_1</span>
-<a name="l00130"></a>00130
-<a name="l00131"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">00131</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> =
-<a name="l00132"></a>00132 <span class="stringliteral">" \n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">"// compute y in Ly = z for incomplete LU factorizations of a sparse matrix in compressed format\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">"__kernel void lu_forward(\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" __global const unsigned int * column_indices, \n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" __global const float * elements,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" __local int * buffer, \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __local float * vec_entries, //a memory block from vector\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" __global float * vector,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">"{\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" int waiting_for; //block index that must be finished before the current thread can start\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" unsigned int waiting_for_index;\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" int block_offset;\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int col;\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int row;\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int row_index_end;\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" //backward substitution: one thread per row in blocks of get_global_size(0)\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" for (unsigned int block_num = 0; block_num <= size / get_global_size(0); ++block_num)\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" {\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" block_offset = block_num * get_global_size(0);\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" row = block_offset + get_global_id(0);\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">" waiting_for = -1;\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" if (row < size)\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" {\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" vec_entries[get_global_id(0)] = vector[row];\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" waiting_for_index = row_indices[row];\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" row_index_end = row_indices[row+1];\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" }\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" \n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" //try to eliminate all lines in the block. \n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" //in worst case scenarios, in each step only one line can be substituted, thus loop\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" for (unsigned int k = 0; k<get_global_size(0); ++k)\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" {\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" if (row < size) //valid index?\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" {\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" if (waiting_for >= 0)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" {\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" if (buffer[waiting_for] == 1)\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" waiting_for = -1;\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" }\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" if (waiting_for == -1) //substitution not yet done, check whether possible\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" {\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" //check whether reduction is possible:\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" {\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" col = column_indices[j];\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" if (col < block_offset) //index valid, but not from current block\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" else if (col < row) //index is from current block\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" {\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" {\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" waiting_for = col - block_offset;\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" waiting_for_index = j;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" break;\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" }\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" else //updated entry is available in shared memory:\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">" }\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" }\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">" \n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">" if (waiting_for == -1) //this row is done\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" {\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" buffer[get_global_id(0)] = 1;\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" waiting_for = -2; //magic number: thread is finished\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" }\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" } \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" } //row < size\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" else\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" ///////// check whether all threads are done. If yes, exit loop /////////////\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" \n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" if (buffer[get_global_id(0)] == 0)\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" buffer[get_global_size(0)] = 0;\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" \n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" if (buffer[get_global_size(0)] > 0) //all threads break this loop simultaneously\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" break;\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">" buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" } //for k\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" \n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" //write to vector:\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" if (row < size)\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" vector[row] = vec_entries[get_global_id(0)];\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" \n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" } //for block_num\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">"}\n"</span>
-<a name="l00228"></a>00228 ; <span class="comment">//compressed_matrix_align1_lu_forward</span>
-<a name="l00229"></a>00229
-<a name="l00230"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">00230</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> =
-<a name="l00231"></a>00231 <span class="stringliteral">"void helper_bicgstab_kernel2_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"{\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" {\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" if (get_local_id(0) < stride)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" }\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"}\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"//////// inner products:\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">"float bicgstab_kernel2_inner_prod(\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" __local float * tmp_buffer)\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"{\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" float tmp = 0;\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" {\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" if (i < size)\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" tmp += vec1[i] * vec2[i];\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" }\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" helper_bicgstab_kernel2_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">" return tmp_buffer[0];\n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"}\n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">"__kernel void bicgstab_kernel2(\n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" __global const float * tmp0,\n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">" __global const float * tmp1,\n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">" __global const float * r0star, \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" __global const float * s, \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">" __global float * p, \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">" __global float * residual,\n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" __global const float * alpha,\n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">" __global float * ip_rr0star,\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">" __global float * error_estimate,\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">" __local float * tmp_buffer,\n"</span>
-<a name="l00272"></a>00272 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00273"></a>00273 <span class="stringliteral">"{ \n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">" float omega_local = bicgstab_kernel2_inner_prod(tmp1, s, size, tmp_buffer) / bicgstab_kernel2_inner_prod(tmp1, tmp1, size, tmp_buffer);\n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">" float alpha_local = alpha[0];\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">" \n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">" //result += alpha * p + omega * s;\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" result[i] += alpha_local * p[i] + omega_local * s[i];\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">" //residual = s - omega * tmp1;\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">" residual[i] = s[i] - omega_local * tmp1[i];\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">" //new_ip_rr0star = viennacl::linalg::inner_prod(residual, r0star);\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">" float new_ip_rr0star = bicgstab_kernel2_inner_prod(residual, r0star, size, tmp_buffer);\n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">" float beta = (new_ip_rr0star / ip_rr0star[0]) * (alpha_local / omega_local);\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">" \n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" //p = residual + beta * (p - omega*tmp0);\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">" p[i] = residual[i] + beta * (p[i] - omega_local * tmp0[i]);\n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">" //compute norm of residual:\n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">" float new_error_estimate = bicgstab_kernel2_inner_prod(residual, residual, size, tmp_buffer);\n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">" //update values:\n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">" {\n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">" error_estimate[0] = new_error_estimate;\n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">" ip_rr0star[0] = new_ip_rr0star;\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">" }\n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"}\n"</span>
-<a name="l00300"></a>00300 ; <span class="comment">//compressed_matrix_align1_bicgstab_kernel2</span>
-<a name="l00301"></a>00301
-<a name="l00302"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">00302</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> =
-<a name="l00303"></a>00303 <span class="stringliteral">"// compute x in Ux = y for incomplete LU factorizations of a sparse matrix in compressed format\n"</span>
-<a name="l00304"></a>00304 <span class="stringliteral">"__kernel void lu_backward(\n"</span>
-<a name="l00305"></a>00305 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00306"></a>00306 <span class="stringliteral">" __global const unsigned int * column_indices, \n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">" __global const float * elements,\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">" __local int * buffer, \n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">" __local float * vec_entries, //a memory block from vector\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">" __global float * vector,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"{\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" int waiting_for; //block index that must be finished before the current thread can start\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">" unsigned int waiting_for_index;\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" unsigned int block_offset;\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">" unsigned int col;\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">" unsigned int row;\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">" unsigned int row_index_end;\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">" float diagonal_entry = 42;\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">" \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">" //forward substitution: one thread per row in blocks of get_global_size(0)\n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">" for (int block_num = size / get_global_size(0); block_num > -1; --block_num)\n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" {\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">" block_offset = block_num * get_global_size(0);\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">" row = block_offset + get_global_id(0);\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">" buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">" waiting_for = -1;\n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">" \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">" if (row < size)\n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">" {\n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">" vec_entries[get_global_id(0)] = vector[row];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">" waiting_for_index = row_indices[row];\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">" row_index_end = row_indices[row+1];\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">" diagonal_entry = column_indices[waiting_for_index];\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">" }\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">" \n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">" buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">" //try to eliminate all lines in the block. \n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">" //in worst case scenarios, in each step only one line can be substituted, thus loop\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">" for (unsigned int k = 0; k<get_global_size(0); ++k)\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">" {\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" if (row < size) //valid index?\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" {\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">" if (waiting_for >= 0)\n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" {\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" if (buffer[waiting_for] == 1)\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">" waiting_for = -1;\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">" }\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">" \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">" if (waiting_for == -1) //substitution not yet done, check whether possible\n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">" {\n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">" //check whether reduction is possible:\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">" for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" {\n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">" col = column_indices[j];\n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" if (col >= block_offset + get_global_size(0)) //index valid, but not from current block\n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">" vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">" else if (col > row) //index is from current block\n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">" {\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">" if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">" {\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">" waiting_for = col - block_offset;\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">" waiting_for_index = j;\n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">" break;\n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">" }\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">" else //updated entry is available in shared memory:\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">" vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">" }\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">" else if (col == row)\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">" diagonal_entry = elements[j];\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">" }\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">" \n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">" if (waiting_for == -1) //this row is done\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" {\n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" if (row == 0)\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">" vec_entries[get_global_id(0)] /= elements[0];\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">" else\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" vec_entries[get_global_id(0)] /= diagonal_entry;\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">" buffer[get_global_id(0)] = 1;\n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">" waiting_for = -2; //magic number: thread is finished\n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">" }\n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">" } \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">" } //row < size\n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">" else\n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">" buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">" \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" ///////// check whether all threads are done. If yes, exit loop /////////////\n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" if (buffer[get_global_id(0)] == 0)\n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" buffer[get_global_size(0)] = 0;\n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">" \n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">" if (buffer[get_global_size(0)] > 0) //all threads break the loop simultaneously\n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">" break;\n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">" buffer[get_global_size(0)] = 1;\n"</span>
-<a name="l00399"></a>00399 <span class="stringliteral">" } //for k\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">" if (row < size)\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">" vector[row] = vec_entries[get_global_id(0)];\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">" //vector[row] = diagonal_entry;\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">" \n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">" //if (row == 0)\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">" //vector[0] = diagonal_entry;\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">" //vector[0] = elements[0];\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">" } //for block_num\n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"}\n"</span>
-<a name="l00410"></a>00410 ; <span class="comment">//compressed_matrix_align1_lu_backward</span>
-<a name="l00411"></a>00411
-<a name="l00412"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">00412</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> =
-<a name="l00413"></a>00413 <span class="stringliteral">"void helper_bicgstab_kernel1_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">"{\n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">" for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">" {\n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">" if (get_local_id(0) < stride)\n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">" tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">" }\n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">"}\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">"//////// inner products:\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"float bicgstab_kernel1_inner_prod(\n"</span>
-<a name="l00424"></a>00424 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00425"></a>00425 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00426"></a>00426 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00427"></a>00427 <span class="stringliteral">" __local float * tmp_buffer)\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"{\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">" float tmp = 0;\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">" unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">" for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">" {\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">" if (i < size)\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">" tmp += vec1[i] * vec2[i];\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">" }\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">" tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">" \n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">" helper_bicgstab_kernel1_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">" return tmp_buffer[0];\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"}\n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">"__kernel void bicgstab_kernel1(\n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">" __global const float * tmp0,\n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">" __global const float * r0star, \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">" __global const float * residual,\n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">" __global float * s,\n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">" __global float * alpha,\n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">" __global const float * ip_rr0star,\n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">" __local float * tmp_buffer,\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"{ \n"</span>
-<a name="l00452"></a>00452 <span class="stringliteral">" float alpha_local = ip_rr0star[0] / bicgstab_kernel1_inner_prod(tmp0, r0star, size, tmp_buffer);\n"</span>
-<a name="l00453"></a>00453 <span class="stringliteral">" \n"</span>
-<a name="l00454"></a>00454 <span class="stringliteral">" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"</span>
-<a name="l00455"></a>00455 <span class="stringliteral">" s[i] = residual[i] - alpha_local * tmp0[i];\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">" \n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">" alpha[0] = alpha_local;\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">"}\n"</span>
-<a name="l00460"></a>00460 ; <span class="comment">//compressed_matrix_align1_bicgstab_kernel1</span>
-<a name="l00461"></a>00461
-<a name="l00462"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">00462</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> =
-<a name="l00463"></a>00463 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">" __global const unsigned int * row_indices,\n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">" __global const uint8 * column_indices, \n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">" __global const float8 * elements,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">" unsigned int size)\n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">"{ \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">" float dot_prod;\n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">" unsigned int start, next_stop;\n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">" uint8 col_idx;\n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">" float8 tmp_vec;\n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">" float8 tmp_entries;\n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">" {\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">" dot_prod = 0.0f;\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">" start = row_indices[row] / 8;\n"</span>
-<a name="l00480"></a>00480 <span class="stringliteral">" next_stop = row_indices[row+1] / 8;\n"</span>
-<a name="l00481"></a>00481 <span class="stringliteral">" for (unsigned int i = start; i < next_stop; ++i)\n"</span>
-<a name="l00482"></a>00482 <span class="stringliteral">" {\n"</span>
-<a name="l00483"></a>00483 <span class="stringliteral">" col_idx = column_indices[i];\n"</span>
-<a name="l00484"></a>00484 <span class="stringliteral">" tmp_entries = elements[i];\n"</span>
-<a name="l00485"></a>00485 <span class="stringliteral">" tmp_vec.s0 = vector[col_idx.s0];\n"</span>
-<a name="l00486"></a>00486 <span class="stringliteral">" tmp_vec.s1 = vector[col_idx.s1];\n"</span>
-<a name="l00487"></a>00487 <span class="stringliteral">" tmp_vec.s2 = vector[col_idx.s2];\n"</span>
-<a name="l00488"></a>00488 <span class="stringliteral">" tmp_vec.s3 = vector[col_idx.s3];\n"</span>
-<a name="l00489"></a>00489 <span class="stringliteral">" tmp_vec.s4 = vector[col_idx.s4];\n"</span>
-<a name="l00490"></a>00490 <span class="stringliteral">" tmp_vec.s5 = vector[col_idx.s5];\n"</span>
-<a name="l00491"></a>00491 <span class="stringliteral">" tmp_vec.s6 = vector[col_idx.s6];\n"</span>
-<a name="l00492"></a>00492 <span class="stringliteral">" tmp_vec.s7 = vector[col_idx.s7];\n"</span>
-<a name="l00493"></a>00493 <span class="stringliteral">" dot_prod += dot(tmp_entries.lo, tmp_vec.lo);\n"</span>
-<a name="l00494"></a>00494 <span class="stringliteral">" dot_prod += dot(tmp_entries.hi, tmp_vec.hi);\n"</span>
-<a name="l00495"></a>00495 <span class="stringliteral">" }\n"</span>
-<a name="l00496"></a>00496 <span class="stringliteral">" result[row] = dot_prod;\n"</span>
-<a name="l00497"></a>00497 <span class="stringliteral">" }\n"</span>
-<a name="l00498"></a>00498 <span class="stringliteral">"}\n"</span>
-<a name="l00499"></a>00499 ; <span class="comment">//compressed_matrix_align8_vec_mul</span>
-<a name="l00500"></a>00500
-<a name="l00501"></a>00501 } <span class="comment">//namespace kernels</span>
-<a name="l00502"></a>00502 } <span class="comment">//namespace linalg</span>
-<a name="l00503"></a>00503 } <span class="comment">//namespace viennacl</span>
-<a name="l00504"></a>00504 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/context_8hpp.html b/doc/doxygen/html/context_8hpp.html
deleted file mode 100644
index 7ab027d..0000000
--- a/doc/doxygen/html/context_8hpp.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include <CL/cl.h></code><br/>
-<code>#include <algorithm></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="program_8hpp_source.html">viennacl/ocl/program.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="command__queue_8hpp_source.html">viennacl/ocl/command_queue.hpp</a>"</code><br/>
-
-<p><a href="context_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/context_8hpp_source.html b/doc/doxygen/html/context_8hpp_source.html
deleted file mode 100644
index fdd8987..0000000
--- a/doc/doxygen/html/context_8hpp_source.html
+++ /dev/null
@@ -1,423 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/context.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="context_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_CONTEXT_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_CONTEXT_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <algorithm></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <vector></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <map></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="program_8hpp.html" title="Implements an OpenCL program class for ViennaCL.">viennacl/ocl/program.hpp</a>"</span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="command__queue_8hpp.html" title="Implementations of command queue representations.">viennacl/ocl/command_queue.hpp</a>"</span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>viennacl
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">namespace </span>ocl
-<a name="l00041"></a>00041 {
-<a name="l00042"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html">00042</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1context.html">context</a>
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keyword">typedef</span> std::vector< viennacl::ocl::program > ProgramContainer;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keyword">public</span>:
-<a name="l00047"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">00047</a> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a>() : initialized_(false), device_type_(CL_DEVICE_TYPE_DEFAULT), current_device_id(0) {}
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049
-<a name="l00051"></a>00051
-<a name="l00052"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19">00052</a> cl_device_type <a class="code" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19" title="Returns the default device type for the context.">default_device_type</a>()
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> device_type_;
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00058"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">00058</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a721482c91a5042d1457b76addf95ff19" title="Returns the default device type for the context.">default_device_type</a>(cl_device_type dtype)
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting new device type for context "</span> << h_ << std::endl;
-<a name="l00062"></a>00062 <span class="preprocessor"> #endif</span>
-<a name="l00063"></a>00063 <span class="preprocessor"></span> <span class="keywordflow">if</span> (!initialized_)
-<a name="l00064"></a>00064 device_type_ = dtype; <span class="comment">//assume that the user provided a correct value</span>
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066
-<a name="l00068"></a>00068
-<a name="l00069"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">00069</a> std::vector<viennacl::ocl::device> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9" title="Returns a vector with all devices in this context.">devices</a>()<span class="keyword"> const</span>
-<a name="l00070"></a>00070 <span class="keyword"> </span>{
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> devices_;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00075"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">00075</a> <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4" title="Returns the current device.">current_device</a>()<span class="keyword"> const</span>
-<a name="l00076"></a>00076 <span class="keyword"> </span>{
-<a name="l00077"></a>00077 <span class="comment">//std::cout << "Current device id in context: " << current_device_id << std::endl;</span>
-<a name="l00078"></a>00078 <span class="keywordflow">return</span> devices_[current_device_id];
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00082"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e">00082</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e" title="Switches the current device to the i-th device in this context.">switch_device</a>(<span class="keywordtype">size_t</span> i)
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 assert(i >= 0 && i < devices_.size());
-<a name="l00085"></a>00085 current_device_id = i;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087
-<a name="l00089"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a3d316253d55eade417eee44bb38b127c">00089</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e" title="Switches the current device to the i-th device in this context.">switch_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & d)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting new current device for context "</span> << h_ << std::endl;
-<a name="l00093"></a>00093 <span class="preprocessor"> #endif</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span> <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;
-<a name="l00095"></a>00095 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<devices_.size(); ++i)
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (devices_[i] == d)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 found = <span class="keyword">true</span>;
-<a name="l00100"></a>00100 current_device_id = i;
-<a name="l00101"></a>00101 <span class="keywordflow">break</span>;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (found == <span class="keyword">false</span>)
-<a name="l00105"></a>00105 std::cerr << <span class="stringliteral">"ViennaCL: Warning: Could not set device "</span> << d.<a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>() << <span class="stringliteral">" for context."</span> << std::endl;
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00109"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">00109</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5" title="Add a device to the context. Must be done before the context is initialized.">add_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & d)
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 assert(!initialized_ && <span class="stringliteral">"Device must be added to context before it is initialized!"</span>);
-<a name="l00112"></a>00112 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Adding new device to context "</span> << h_ << std::endl;
-<a name="l00114"></a>00114 <span class="preprocessor"> #endif</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span> <span class="keywordflow">if</span> (std::find(devices_.begin(), devices_.end(), d) != devices_.end())
-<a name="l00116"></a>00116 devices_.push_back(d);
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00120"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a9d802c8ffe94de98a9c049dbf4a3561d">00120</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5" title="Add a device to the context. Must be done before the context is initialized.">add_device</a>(cl_device_id d)
-<a name="l00121"></a>00121 {
-<a name="l00122"></a>00122 assert(!initialized_ && <span class="stringliteral">"Device must be added to context before it is initialized!"</span>);
-<a name="l00123"></a>00123 <a class="code" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5" title="Add a device to the context. Must be done before the context is initialized.">add_device</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a>(d));
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126
-<a name="l00128"></a>00128
-<a name="l00130"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">00130</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947" title="Initializes a new context.">init</a>()
-<a name="l00131"></a>00131 {
-<a name="l00132"></a>00132 init_new();
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00136"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">00136</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947" title="Initializes a new context.">init</a>(cl_context c)
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 init_existing(c);
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="comment">/* void existing_context(cl_context context_id)</span>
-<a name="l00142"></a>00142 <span class="comment"> {</span>
-<a name="l00143"></a>00143 <span class="comment"> assert(!initialized_ && "ViennaCL: FATAL error: Provided a new context for an already initialized context.");</span>
-<a name="l00144"></a>00144 <span class="comment"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00145"></a>00145 <span class="comment"> std::cout << "ViennaCL: Reusing existing context " << h_ << std::endl;</span>
-<a name="l00146"></a>00146 <span class="comment"> #endif</span>
-<a name="l00147"></a>00147 <span class="comment"> h_ = context_id;</span>
-<a name="l00148"></a>00148 <span class="comment"> }*/</span>
-<a name="l00149"></a>00149
-<a name="l00151"></a>00151
-<a name="l00157"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5">00157</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(cl_mem_flags flags, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>, <span class="keywordtype">void</span> * ptr = NULL)
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00160"></a>00160 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Creating memory of size "</span> << size << <span class="stringliteral">" for context "</span> << h_ << std::endl;
-<a name="l00161"></a>00161 <span class="preprocessor"> #endif</span>
-<a name="l00162"></a>00162 <span class="preprocessor"></span> <span class="keywordflow">if</span> (ptr)
-<a name="l00163"></a>00163 flags |= CL_MEM_COPY_HOST_PTR;
-<a name="l00164"></a>00164 cl_int err;
-<a name="l00165"></a>00165 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> mem = clCreateBuffer(<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>(), flags, size, ptr, &err);
-<a name="l00166"></a>00166 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> mem;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00175"></a>00175 <span class="keyword">template</span> < <span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> A, <span class="keyword">template</span> <<span class="keyword">typename</span>, <span class="keyword">typename</span>> <span class="keyword">class </span>VectorType >
-<a name="l00176"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a1e038c8113ae2ce29ce49264573aaad3">00176</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(cl_mem_flags flags, <span class="keyword">const</span> VectorType<SCALARTYPE, A> & _buffer)
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(flags, static_cast<unsigned int>(<span class="keyword">sizeof</span>(SCALARTYPE) * _buffer.size()), (<span class="keywordtype">void</span>*)&_buffer[0]);
-<a name="l00179"></a>00179 }
-<a name="l00180"></a>00180
-<a name="l00182"></a>00182
-<a name="l00184"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">00184</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f" title="Adds an existing queue for the given device to the context.">add_queue</a>(cl_device_id dev, cl_command_queue q)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00187"></a>00187 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Adding existing queue "</span> << q << <span class="stringliteral">" for device "</span> << dev << <span class="stringliteral">" to context "</span> << h_ << std::endl;
-<a name="l00188"></a>00188 <span class="preprocessor"> #endif</span>
-<a name="l00189"></a>00189 <span class="preprocessor"></span> queues_[dev].push_back(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a>(q, dev));
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191
-<a name="l00193"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a3998738469ebf1f8168b246e2c1cd175">00193</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f" title="Adds an existing queue for the given device to the context.">add_queue</a>(cl_device_id dev)
-<a name="l00194"></a>00194 {
-<a name="l00195"></a>00195 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00196"></a>00196 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Adding new queue for device "</span> << dev << <span class="stringliteral">" to context "</span> << h_ << std::endl;
-<a name="l00197"></a>00197 <span class="preprocessor"> #endif</span>
-<a name="l00198"></a>00198 <span class="preprocessor"></span> cl_int err;
-<a name="l00199"></a>00199 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_command_queue></a> temp = clCreateCommandQueue(<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>(), dev, 0, &err);
-<a name="l00200"></a>00200 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 queues_[dev].push_back(<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a>(temp, dev));
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00206"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08">00206</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08" title="Adds a queue for the given device to the context.">add_queue</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> d) { <a class="code" href="classviennacl_1_1ocl_1_1context.html#ac171d50dc65c9edb5f30327d6549bd08" title="Adds a queue for the given device to the context.">add_queue</a>(d.<a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06" title="Returns the OpenCL device id.">id</a>()); }
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="comment">//get queue for default device:</span>
-<a name="l00209"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">00209</a> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>()
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">return</span> queues_[devices_[current_device_id].id()][0];
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 <span class="comment">//get a particular queue:</span>
-<a name="l00216"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a52653c861c4b28157632901b3b401a93">00216</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">get_queue</a>(cl_device_id dev, <span class="keywordtype">size_t</span> i = 0)
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 assert(i >= 0 && i < queues_.size() && <span class="stringliteral">"In class 'context': id invalid in get_queue()"</span>);
-<a name="l00219"></a>00219 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00220"></a>00220 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Getting queue "</span> << i << <span class="stringliteral">" for device "</span> << dev << <span class="stringliteral">" in context "</span> << h_ << std::endl;
-<a name="l00221"></a>00221 <span class="preprocessor"> #endif</span>
-<a name="l00222"></a>00222 <span class="preprocessor"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> device_index;
-<a name="l00223"></a>00223 <span class="keywordflow">for</span> (device_index = 0; device_index < devices_.size(); ++device_index)
-<a name="l00224"></a>00224 {
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (devices_[device_index] == dev)
-<a name="l00226"></a>00226 <span class="keywordflow">break</span>;
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 assert(device_index < devices_.size() && <span class="stringliteral">"Device not within context"</span>);
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <span class="keywordflow">return</span> queues_[devices_[device_index].id()][i];
-<a name="l00232"></a>00232 }
-<a name="l00233"></a>00233
-<a name="l00235"></a>00235
-<a name="l00237"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">00237</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(cl_program p, std::string <span class="keyword">const</span> & prog_name)
-<a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 programs_.push_back(<a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>(p, prog_name));
-<a name="l00240"></a>00240 <span class="keywordflow">return</span> programs_.back();
-<a name="l00241"></a>00241 }
-<a name="l00242"></a>00242
-<a name="l00245"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a79fd3f2c5fd14ff3cf130504949538dc">00245</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(std::string <span class="keyword">const</span> & source, std::string <span class="keyword">const</span> & prog_name)
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="keyword">const</span> <span class="keywordtype">char</span> * source_text = source.c_str();
-<a name="l00248"></a>00248 <span class="keywordtype">size_t</span> source_size = source.size();
-<a name="l00249"></a>00249 cl_int err;
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00252"></a>00252 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Adding program '"</span> << prog_name << <span class="stringliteral">"' to context "</span> << h_ << std::endl;
-<a name="l00253"></a>00253 <span class="preprocessor"> #endif</span>
-<a name="l00254"></a>00254 <span class="preprocessor"></span>
-<a name="l00255"></a>00255 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> temp = clCreateProgramWithSource(h_, 1, (<span class="keyword">const</span> <span class="keywordtype">char</span> **)&source_text, &source_size, &err);
-<a name="l00256"></a>00256 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 err = clBuildProgram(temp, 0, NULL, NULL, NULL, NULL);
-<a name="l00259"></a>00259 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_BUILD)</span>
-<a name="l00260"></a>00260 <span class="preprocessor"></span> <span class="keywordtype">char</span> buffer[1024];
-<a name="l00261"></a>00261 cl_build_status status;
-<a name="l00262"></a>00262 clGetProgramBuildInfo(temp, devices_[0].<span class="keywordtype">id</span>(), CL_PROGRAM_BUILD_STATUS, <span class="keyword">sizeof</span>(cl_build_status), &status, NULL);
-<a name="l00263"></a>00263 clGetProgramBuildInfo(temp, devices_[0].<span class="keywordtype">id</span>(), CL_PROGRAM_BUILD_LOG, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, &buffer, NULL);
-<a name="l00264"></a>00264 std::cout << <span class="stringliteral">"Build Scalar: Err = "</span> << err << <span class="stringliteral">" Status = "</span> << status << std::endl;
-<a name="l00265"></a>00265 std::cout << <span class="stringliteral">"Log: "</span> << buffer << std::endl;
-<a name="l00266"></a>00266 <span class="preprocessor"> #endif</span>
-<a name="l00267"></a>00267 <span class="preprocessor"></span> <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 programs_.push_back(<a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a>(temp, prog_name));
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="keywordflow">return</span> programs_.back();
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273
-<a name="l00275"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">00275</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(std::string <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a>)
-<a name="l00276"></a>00276 {
-<a name="l00277"></a>00277 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00278"></a>00278 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Getting program '"</span> << name << <span class="stringliteral">"' from context "</span> << h_ << std::endl;
-<a name="l00279"></a>00279 <span class="preprocessor"> #endif</span>
-<a name="l00280"></a>00280 <span class="preprocessor"></span> <span class="keywordflow">for</span> (ProgramContainer::iterator it = programs_.begin();
-<a name="l00281"></a>00281 it != programs_.end();
-<a name="l00282"></a>00282 ++it)
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (it->name() == name)
-<a name="l00285"></a>00285 <span class="keywordflow">return</span> *it;
-<a name="l00286"></a>00286 }
-<a name="l00287"></a>00287 std::cerr << <span class="stringliteral">"Could not find program '"</span> << name << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00288"></a>00288 assert(!<span class="stringliteral">"In class 'context': name invalid in get_program()"</span>);
-<a name="l00289"></a>00289 <span class="keywordflow">return</span> programs_[0]; <span class="comment">//return a defined object</span>
-<a name="l00290"></a>00290 }
-<a name="l00291"></a>00291
-<a name="l00293"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a69eae83a60cdc4b1365dca0e7bd93a44">00293</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(<span class="keywordtype">size_t</span> <span class="keywordtype">id</span>)
-<a name="l00294"></a>00294 {
-<a name="l00295"></a>00295 assert(<span class="keywordtype">id</span> >= 0 && <span class="keywordtype">id</span> < programs_.size() && <span class="stringliteral">"In class 'context': id invalid in get_program()"</span>);
-<a name="l00296"></a>00296 <span class="keywordflow">return</span> programs_[id];
-<a name="l00297"></a>00297 }
-<a name="l00298"></a>00298
-<a name="l00300"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">00300</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec" title="Returns the number of programs within this context.">program_num</a>() { <span class="keywordflow">return</span> programs_.size(); }
-<a name="l00301"></a>00301
-<a name="l00303"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">00303</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140" title="Returns the number of devices within this context.">device_num</a>() { <span class="keywordflow">return</span> devices_.size(); }
-<a name="l00304"></a>00304
-<a name="l00306"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">00306</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_context></a> & <a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> h_; }
-<a name="l00307"></a>00307
-<a name="l00309"></a><a class="code" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">00309</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe" title="Less-than comparable for compatibility with std:map.">operator<</a>(<a class="code" href="classviennacl_1_1ocl_1_1context.html">context</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00310"></a>00310 <span class="keyword"> </span>{
-<a name="l00311"></a>00311 <span class="keywordflow">return</span> h_ < other.h_;
-<a name="l00312"></a>00312 }
-<a name="l00313"></a>00313
-<a name="l00314"></a>00314 <span class="keyword">private</span>:
-<a name="l00316"></a>00316 <span class="keywordtype">void</span> init_new()
-<a name="l00317"></a>00317 {
-<a name="l00318"></a>00318 assert(!initialized_ && <span class="stringliteral">"ViennaCL FATAL error: Context already created!"</span>);
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00321"></a>00321 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Initializing new ViennaCL context."</span> << std::endl;
-<a name="l00322"></a>00322 <span class="preprocessor"> #endif</span>
-<a name="l00323"></a>00323 <span class="preprocessor"></span>
-<a name="l00324"></a>00324 cl_int err;
-<a name="l00325"></a>00325 std::vector<cl_device_id> device_id_array;
-<a name="l00326"></a>00326 <span class="keywordflow">if</span> (devices_.empty()) <span class="comment">//get the default device if user has not yet specified a list of devices</span>
-<a name="l00327"></a>00327 {
-<a name="l00328"></a>00328 <span class="comment">//create an OpenCL context for the provided devices:</span>
-<a name="l00329"></a>00329 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00330"></a>00330 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting all devices for context..."</span> << std::endl;
-<a name="l00331"></a>00331 <span class="preprocessor"> #endif</span>
-<a name="l00332"></a>00332 <span class="preprocessor"></span>
-<a name="l00333"></a>00333 <a class="code" href="classviennacl_1_1ocl_1_1platform.html">platform</a> pf;
-<a name="l00334"></a>00334 std::vector<device> <a class="code" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9" title="Returns a vector with all devices in this context.">devices</a> = pf.<a class="code" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995" title="Returns the available devices of the supplied device type.">devices</a>(device_type_);
-<a name="l00335"></a>00335 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00336"></a>00336 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Number of devices for context: "</span> << devices.size() << std::endl;
-<a name="l00337"></a>00337 <span class="preprocessor"> #endif</span>
-<a name="l00338"></a>00338 <span class="preprocessor"></span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<devices.size(); ++i)
-<a name="l00339"></a>00339 devices_.push_back(devices[i]);
-<a name="l00340"></a>00340
-<a name="l00341"></a>00341 <span class="keywordflow">if</span> (devices.size() == 0)
-<a name="l00342"></a>00342 {
-<a name="l00343"></a>00343 std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: No devices of type '"</span>;
-<a name="l00344"></a>00344 <span class="keywordflow">switch</span> (device_type_)
-<a name="l00345"></a>00345 {
-<a name="l00346"></a>00346 <span class="keywordflow">case</span> CL_DEVICE_TYPE_CPU: std::cout << <span class="stringliteral">"CPU"</span>; <span class="keywordflow">break</span>;
-<a name="l00347"></a>00347 <span class="keywordflow">case</span> CL_DEVICE_TYPE_GPU: std::cout << <span class="stringliteral">"CPU"</span>; <span class="keywordflow">break</span>;
-<a name="l00348"></a>00348 <span class="keywordflow">case</span> CL_DEVICE_TYPE_ACCELERATOR: std::cout << <span class="stringliteral">"ACCELERATOR"</span>; <span class="keywordflow">break</span>;
-<a name="l00349"></a>00349 <span class="keywordflow">case</span> CL_DEVICE_TYPE_DEFAULT: std::cout << <span class="stringliteral">"DEFAULT"</span>; <span class="keywordflow">break</span>;
-<a name="l00350"></a>00350 <span class="keywordflow">default</span>:
-<a name="l00351"></a>00351 std::cout << <span class="stringliteral">"UNKNOWN"</span> << std::endl;
-<a name="l00352"></a>00352 }
-<a name="l00353"></a>00353 std::cout << <span class="stringliteral">"' found!"</span> << std::endl;
-<a name="l00354"></a>00354 }
-<a name="l00355"></a>00355 }
-<a name="l00356"></a>00356
-<a name="l00357"></a>00357 <span class="comment">//extract list of device ids:</span>
-<a name="l00358"></a>00358 <span class="keywordflow">for</span> (std::vector< viennacl::ocl::device >::const_iterator iter = devices_.begin();
-<a name="l00359"></a>00359 iter != devices_.end();
-<a name="l00360"></a>00360 ++iter)
-<a name="l00361"></a>00361 device_id_array.push_back(iter->id());
-<a name="l00362"></a>00362
-<a name="l00363"></a>00363 h_ = clCreateContext(0, device_id_array.size(), &(device_id_array[0]), NULL, NULL, &err);
-<a name="l00364"></a>00364 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00365"></a>00365
-<a name="l00366"></a>00366 initialized_ = <span class="keyword">true</span>;
-<a name="l00367"></a>00367 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00368"></a>00368 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Initialization of new ViennaCL context done."</span> << std::endl;
-<a name="l00369"></a>00369 <span class="preprocessor"> #endif</span>
-<a name="l00370"></a>00370 <span class="preprocessor"></span> }
-<a name="l00371"></a>00371
-<a name="l00373"></a>00373 <span class="keywordtype">void</span> init_existing(cl_context c)
-<a name="l00374"></a>00374 {
-<a name="l00375"></a>00375 assert(!initialized_ && <span class="stringliteral">"ViennaCL FATAL error: Context already created!"</span>);
-<a name="l00376"></a>00376 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00377"></a>00377 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Initialization of ViennaCL context from existing context."</span> << std::endl;
-<a name="l00378"></a>00378 <span class="preprocessor"> #endif</span>
-<a name="l00379"></a>00379 <span class="preprocessor"></span>
-<a name="l00380"></a>00380 <span class="comment">//set context handle:</span>
-<a name="l00381"></a>00381 h_ = c;
-<a name="l00382"></a>00382
-<a name="l00383"></a>00383 <span class="keywordflow">if</span> (devices_.empty())
-<a name="l00384"></a>00384 {
-<a name="l00385"></a>00385 <span class="comment">//get devices for context:</span>
-<a name="l00386"></a>00386 cl_int err;
-<a name="l00387"></a>00387 cl_uint num_devices;
-<a name="l00388"></a>00388 <span class="keywordtype">size_t</span> temp;
-<a name="l00389"></a>00389 <span class="comment">//Note: The obvious</span>
-<a name="l00390"></a>00390 <span class="comment">// err = clGetContextInfo(h_, CL_CONTEXT_NUM_DEVICES, sizeof(cl_uint), &num_devices, NULL);</span>
-<a name="l00391"></a>00391 <span class="comment">//does not work with NVIDIA OpenCL stack!</span>
-<a name="l00392"></a>00392 err = clGetContextInfo(h_, CL_CONTEXT_DEVICES, <a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a> * <span class="keyword">sizeof</span>(cl_device_id), NULL, &temp);
-<a name="l00393"></a>00393 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00394"></a>00394 assert(temp > 0 && <span class="stringliteral">"ViennaCL: FATAL error: Provided context does not contain any devices!"</span>);
-<a name="l00395"></a>00395 num_devices = temp / <span class="keyword">sizeof</span>(cl_device_id);
-<a name="l00396"></a>00396
-<a name="l00397"></a>00397 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00398"></a>00398 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Reusing context with "</span> << num_devices << <span class="stringliteral">" devices."</span> << std::endl;
-<a name="l00399"></a>00399 <span class="preprocessor"> #endif</span>
-<a name="l00400"></a>00400 <span class="preprocessor"></span>
-<a name="l00401"></a>00401 std::vector<cl_device_id> device_ids(num_devices);
-<a name="l00402"></a>00402 err = clGetContextInfo(h_, CL_CONTEXT_DEVICES, num_devices * <span class="keyword">sizeof</span>(cl_device_id), &(device_ids[0]), NULL);
-<a name="l00403"></a>00403 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00404"></a>00404
-<a name="l00405"></a>00405 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<num_devices; ++i)
-<a name="l00406"></a>00406 devices_.push_back(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a>(device_ids[i]));
-<a name="l00407"></a>00407 }
-<a name="l00408"></a>00408 current_device_id = 0;
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410 initialized_ = <span class="keyword">true</span>;
-<a name="l00411"></a>00411 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_CONTEXT)</span>
-<a name="l00412"></a>00412 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Initialization of ViennaCL context from existing context done."</span> << std::endl;
-<a name="l00413"></a>00413 <span class="preprocessor"> #endif</span>
-<a name="l00414"></a>00414 <span class="preprocessor"></span> }
-<a name="l00415"></a>00415
-<a name="l00416"></a>00416
-<a name="l00417"></a>00417 <span class="keywordtype">bool</span> initialized_;
-<a name="l00418"></a>00418 cl_device_type device_type_;
-<a name="l00419"></a>00419 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_context></a> h_;
-<a name="l00420"></a>00420 std::vector< viennacl::ocl::device > devices_;
-<a name="l00421"></a>00421 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_device_id;
-<a name="l00422"></a>00422 ProgramContainer programs_;
-<a name="l00423"></a>00423 std::map< cl_device_id, std::vector< viennacl::ocl::command_queue> > queues_;
-<a name="l00424"></a>00424 }; <span class="comment">//context</span>
-<a name="l00425"></a>00425
-<a name="l00426"></a>00426 }
-<a name="l00427"></a>00427 }
-<a name="l00428"></a>00428
-<a name="l00429"></a>00429 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix_8hpp.html b/doc/doxygen/html/coordinate__matrix_8hpp.html
deleted file mode 100644
index 71ad22d..0000000
--- a/doc/doxygen/html/coordinate__matrix_8hpp.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the coordinate_matrix class.
-<a href="#_details">More...</a></p>
-<code>#include <map></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <list></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="coordinate__matrix__operations_8hpp_source.html">viennacl/linalg/coordinate_matrix_operations.hpp</a>"</code><br/>
-
-<p><a href="coordinate__matrix_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry. <a href="classviennacl_1_1coordinate__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a87f711ebb1d8fd6435d31f1841f9cfaf">copy</a> (const CPU_MATRIX &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). <a href="#a87f711ebb1d8fd6435d31f1841f9cfaf"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4fb2cd615454e656202d5d6f1a54483">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. <a href="#ab4fb2cd615454e656202d5d6f1a54483"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab2ea05f107d5ec7f31214a2898ccbe08">copy</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. <a href="#ab2ea05f107d5ec7f31214a2898ccbe08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae1d2b8aa5bf56f7479a66d51713708d2">copy</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . <a href="#ae1d2b8aa5bf56f7479a66d51713708d2"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the coordinate_matrix class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix_8hpp_source.html b/doc/doxygen/html/coordinate__matrix_8hpp_source.html
deleted file mode 100644
index b1bbf9f..0000000
--- a/doc/doxygen/html/coordinate__matrix_8hpp_source.html
+++ /dev/null
@@ -1,307 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/coordinate_matrix.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <map></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <vector></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <list></span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a>"</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>viennacl
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="comment">//provide copy-operation:</span>
-<a name="l00044"></a>00044 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00045"></a><a class="code" href="namespaceviennacl.html#a87f711ebb1d8fd6435d31f1841f9cfaf">00045</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00046"></a>00046 <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keywordtype">size_t</span> group_num = 64;
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="comment">// Step 1: Determine nonzeros:</span>
-<a name="l00051"></a>00051 <span class="keywordflow">if</span> ( cpu_matrix.size1() > 0 && cpu_matrix.size2() > 0 )
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_entries = 0;
-<a name="l00054"></a>00054 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00055"></a>00055 row_it != cpu_matrix.end1();
-<a name="l00056"></a>00056 ++row_it)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00059"></a>00059 col_it != row_it.end();
-<a name="l00060"></a>00060 ++col_it)
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 ++num_entries;
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 <span class="comment">// Step 2: Set up matrix data:</span>
-<a name="l00067"></a>00067 std::cout << <span class="stringliteral">"Number of entries: "</span> << num_entries << std::endl;
-<a name="l00068"></a>00068 gpu_matrix.nonzeros_ = num_entries;
-<a name="l00069"></a>00069 gpu_matrix.rows_ = cpu_matrix.size1();
-<a name="l00070"></a>00070 gpu_matrix.cols_ = cpu_matrix.size2();
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 std::vector<cl_uint> coord_buffer(2*gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00073"></a>00073 std::vector<cl_uint> group_boundaries(group_num + 1);
-<a name="l00074"></a>00074 std::vector<SCALARTYPE> elements(gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index = 0;
-<a name="l00077"></a>00077 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_fraction = 0;
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
-<a name="l00080"></a>00080 row_it != cpu_matrix.end1();
-<a name="l00081"></a>00081 ++row_it)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="keywordflow">for</span> (<span class="keyword">typename</span> CPU_MATRIX::const_iterator2 col_it = row_it.begin();
-<a name="l00084"></a>00084 col_it != row_it.end();
-<a name="l00085"></a>00085 ++col_it)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 coord_buffer[2*data_index] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(col_it.index1());
-<a name="l00088"></a>00088 coord_buffer[2*data_index + 1] = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(col_it.index2());
-<a name="l00089"></a>00089 elements[data_index] = *col_it;
-<a name="l00090"></a>00090 ++data_index;
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keywordflow">if</span> (data_index > (current_fraction + 1) / <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(group_num) * num_entries) <span class="comment">//split data equally over 64 groups</span>
-<a name="l00094"></a>00094 group_boundaries[++current_fraction] = data_index;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="comment">//write end of last group:</span>
-<a name="l00098"></a>00098 group_boundaries[group_num] = data_index;
-<a name="l00099"></a>00099 <span class="comment">//group_boundaries[1] = data_index; //for one compute unit</span>
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="comment">/*std::cout << "Group boundaries: " << std::endl;</span>
-<a name="l00102"></a>00102 <span class="comment"> for (size_t i=0; i<group_boundaries.size(); ++i)</span>
-<a name="l00103"></a>00103 <span class="comment"> std::cout << group_boundaries[i] << std::endl;*/</span>
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 gpu_matrix.coord_buffer_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, coord_buffer);
-<a name="l00106"></a>00106 gpu_matrix.elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, elements);
-<a name="l00107"></a>00107 gpu_matrix.group_boundaries_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, group_boundaries);
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110
-<a name="l00116"></a>00116 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00117"></a><a class="code" href="namespaceviennacl.html#ab4fb2cd615454e656202d5d6f1a54483">00117</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix,
-<a name="l00118"></a>00118 <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix )
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">tools::const_sparse_matrix_adapter<SCALARTYPE></a>(cpu_matrix), gpu_matrix);
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="comment">//gpu to cpu:</span>
-<a name="l00133"></a>00133 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00134"></a><a class="code" href="namespaceviennacl.html#ab2ea05f107d5ec7f31214a2898ccbe08">00134</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00135"></a>00135 CPU_MATRIX & cpu_matrix )
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> ( gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>() > 0 && gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>() > 0 )
-<a name="l00138"></a>00138 {
-<a name="l00139"></a>00139 cpu_matrix.resize(gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>(), <span class="keyword">false</span>);
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141 <span class="comment">//get raw data from memory:</span>
-<a name="l00142"></a>00142 std::vector<unsigned int> coord_buffer(2*gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00143"></a>00143 std::vector<SCALARTYPE> elements(gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>());
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 <span class="comment">//std::cout << "GPU nonzeros: " << gpu_matrix.nnz() << std::endl;</span>
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 cl_int err;
-<a name="l00148"></a>00148 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8" title="Returns the OpenCL handle to the (row, column) index array.">handle12</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">unsigned</span> int)* 2 *gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>(), &(coord_buffer[0]), 0, NULL, NULL);
-<a name="l00149"></a>00149 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00150"></a>00150 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>(), &(elements[0]), 0, NULL, NULL);
-<a name="l00151"></a>00151 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00152"></a>00152 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="comment">//fill the cpu_matrix:</span>
-<a name="l00155"></a>00155 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index = 0; index < gpu_matrix.<a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>(); ++index)
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 cpu_matrix(coord_buffer[2*index], coord_buffer[2*index+1]) = elements[index];
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161
-<a name="l00167"></a>00167 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00168"></a><a class="code" href="namespaceviennacl.html#ae1d2b8aa5bf56f7479a66d51713708d2">00168</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & gpu_matrix,
-<a name="l00169"></a>00169 std::vector< std::map<unsigned int, SCALARTYPE> > & cpu_matrix)
-<a name="l00170"></a>00170 {
-<a name="l00171"></a>00171 <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">tools::sparse_matrix_adapter<SCALARTYPE></a> temp(cpu_matrix);
-<a name="l00172"></a>00172 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(gpu_matrix, temp);
-<a name="l00173"></a>00173 }
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175
-<a name="l00177"></a>00177
-<a name="l00184"></a>00184 <span class="keyword">template</span><<span class="keyword">class </span>SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT <span class="comment">/* see VCLForwards.h */</span> >
-<a name="l00185"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html">00185</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187 <span class="keyword">public</span>:
-<a name="l00188"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">00188</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00189"></a>00189
-<a name="l00191"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a">00191</a> <a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a" title="Default construction of a coordinate matrix. No memory is allocated.">coordinate_matrix</a>() : rows_(0), cols_(0), nonzeros_(0) { viennacl::linalg::kernels::coordinate_matrix<SCALARTYPE, ALIGNMENT>::init(); }
-<a name="l00192"></a>00192
-<a name="l00199"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">00199</a> <a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a" title="Default construction of a coordinate matrix. No memory is allocated.">coordinate_matrix</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros = 0) :
-<a name="l00200"></a>00200 rows_(rows), cols_(cols), nonzeros_(nonzeros)
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 viennacl::linalg::kernels::coordinate_matrix<SCALARTYPE, ALIGNMENT>::init();
-<a name="l00203"></a>00203 <span class="keywordflow">if</span> (nonzeros > 0)
-<a name="l00204"></a>00204 {
-<a name="l00205"></a>00205 coord_buffer_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint) * 2 * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00206"></a>00206 elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00207"></a>00207 group_boundaries_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint) * (rows + 1));
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210
-<a name="l00212"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">00212</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1" title="Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved...">reserve</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_nonzeros)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (new_nonzeros > nonzeros_)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> coord_buffer_old = coord_buffer_;
-<a name="l00217"></a>00217 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> elements_old = elements_;
-<a name="l00218"></a>00218 coord_buffer_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint) * 2 * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00219"></a>00219 elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE) * <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>());
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 cl_int err;
-<a name="l00222"></a>00222 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), coord_buffer_old, coord_buffer_, 0, 0, <span class="keyword">sizeof</span>(cl_uint) * 2 * nonzeros_, 0, NULL, NULL);
-<a name="l00223"></a>00223 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00224"></a>00224 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), elements_old, elements_, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*nonzeros_, 0, NULL, NULL);
-<a name="l00225"></a>00225 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227 <span class="comment">//new memory must be padded with zeros:</span>
-<a name="l00228"></a>00228 std::vector<long> temp(<a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>() - nonzeros_);
-<a name="l00229"></a>00229 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), coord_buffer_old, coord_buffer_, 0, nonzeros_, <span class="keyword">sizeof</span>(cl_uint) * 2 * temp.size(), 0, NULL, NULL);
-<a name="l00230"></a>00230 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00231"></a>00231 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(), elements_old, elements_, 0, nonzeros_, <span class="keyword">sizeof</span>(SCALARTYPE)*temp.size(), 0, NULL, NULL);
-<a name="l00232"></a>00232 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234 }
-<a name="l00235"></a>00235
-<a name="l00242"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">00242</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25" title="Resize the matrix.">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_size2, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 assert (new_size1 > 0 && new_size2 > 0);
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keywordflow">if</span> (new_size1 < rows_ || new_size2 < cols_) <span class="comment">//enlarge buffer</span>
-<a name="l00247"></a>00247 {
-<a name="l00248"></a>00248 std::vector<std::map<unsigned int, SCALARTYPE> > stl_sparse_matrix;
-<a name="l00249"></a>00249 <span class="keywordflow">if</span> (rows_ > 0)
-<a name="l00250"></a>00250 stl_sparse_matrix.resize(rows_);
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="keywordflow">if</span> (preserve && rows_ > 0)
-<a name="l00253"></a>00253 <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">viennacl::copy</a>(*<span class="keyword">this</span>, stl_sparse_matrix);
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 stl_sparse_matrix.resize(new_size1);
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 std::cout << <span class="stringliteral">"Cropping STL matrix of size "</span> << stl_sparse_matrix.size() << std::endl;
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (new_size2 < cols_ && rows_ > 0)
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<stl_sparse_matrix.size(); ++i)
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 std::list<unsigned int> to_delete;
-<a name="l00263"></a>00263 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<unsigned int, SCALARTYPE>::iterator it = stl_sparse_matrix[i].begin();
-<a name="l00264"></a>00264 it != stl_sparse_matrix[i].end();
-<a name="l00265"></a>00265 ++it)
-<a name="l00266"></a>00266 {
-<a name="l00267"></a>00267 <span class="keywordflow">if</span> (it->first >= new_size2)
-<a name="l00268"></a>00268 to_delete.push_back(it->first);
-<a name="l00269"></a>00269 }
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="keywordflow">for</span> (std::list<unsigned int>::iterator it = to_delete.begin(); it != to_delete.end(); ++it)
-<a name="l00272"></a>00272 stl_sparse_matrix[i].erase(*it);
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 std::cout << <span class="stringliteral">"Cropping done..."</span> << std::endl;
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276
-<a name="l00277"></a>00277 rows_ = new_size1;
-<a name="l00278"></a>00278 cols_ = new_size2;
-<a name="l00279"></a>00279 <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">viennacl::copy</a>(stl_sparse_matrix, *<span class="keyword">this</span>);
-<a name="l00280"></a>00280 }
-<a name="l00281"></a>00281
-<a name="l00282"></a>00282 rows_ = new_size1;
-<a name="l00283"></a>00283 cols_ = new_size2;
-<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286
-<a name="l00288"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">00288</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rows_; }
-<a name="l00290"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">00290</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cols_; }
-<a name="l00292"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">00292</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b" title="Returns the number of nonzero entries.">nnz</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> nonzeros_; }
-<a name="l00294"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">00294</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f" title="Returns the number of internal nonzero entries.">internal_nnz</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(nonzeros_, ALIGNMENT);; }
-<a name="l00295"></a>00295
-<a name="l00297"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">00297</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8" title="Returns the OpenCL handle to the (row, column) index array.">handle12</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> coord_buffer_; }
-<a name="l00299"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">00299</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> elements_; }
-<a name="l00301"></a><a class="code" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">00301</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0" title="Returns the OpenCL handle to the group start index array.">handle3</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> group_boundaries_; }
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00304"></a>00304 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX>
-<a name="l00305"></a>00305 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix, <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> & gpu_matrix );
-<a name="l00306"></a>00306 <span class="preprocessor"> #else</span>
-<a name="l00307"></a>00307 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00308"></a>00308 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix, <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE2, ALIGNMENT2></a> & gpu_matrix );
-<a name="l00309"></a>00309 <span class="preprocessor"> #endif</span>
-<a name="l00310"></a>00310 <span class="preprocessor"></span>
-<a name="l00311"></a>00311 <span class="keyword">private</span>:
-<a name="l00313"></a>00313 <a class="code" href="classviennacl_1_1coordinate__matrix.html#aee188ff216de32fdea80ffcaf47c515a" title="Default construction of a coordinate matrix. No memory is allocated.">coordinate_matrix</a>(<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> <span class="keyword">const</span> &);
-<a name="l00314"></a>00314
-<a name="l00316"></a>00316 <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> & operator=(<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> <span class="keyword">const</span> &);
-<a name="l00317"></a>00317
-<a name="l00318"></a>00318
-<a name="l00319"></a>00319 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows_;
-<a name="l00320"></a>00320 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols_;
-<a name="l00321"></a>00321 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nonzeros_;
-<a name="l00322"></a>00322 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> coord_buffer_;
-<a name="l00323"></a>00323 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> elements_;
-<a name="l00324"></a>00324 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> group_boundaries_;
-<a name="l00325"></a>00325 };
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__kernels_8h.html b/doc/doxygen/html/coordinate__matrix__kernels_8h.html
deleted file mode 100644
index 9dd6d63..0000000
--- a/doc/doxygen/html/coordinate__matrix__kernels_8h.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="coordinate__matrix__source_8h_source.html">viennacl/linalg/kernels/coordinate_matrix_source.h</a>"</code><br/>
-
-<p><a href="coordinate__matrix__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__kernels_8h_source.html b/doc/doxygen/html/coordinate__matrix__kernels_8h_source.html
deleted file mode 100644
index 790aef4..0000000
--- a/doc/doxygen/html/coordinate__matrix__kernels_8h_source.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="coordinate__matrix__source_8h.html">viennacl/linalg/kernels/coordinate_matrix_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>coordinate_matrix;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">00022</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><float, 128>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_coordinate_matrix_128"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>);
-<a name="l00037"></a>00037 std::string prog_name = program_name();
-<a name="l00038"></a>00038 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00040"></a>00040 <span class="preprocessor"> #endif</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00042"></a>00042 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00043"></a>00043 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00044"></a>00044 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00045"></a>00045 } <span class="comment">//if</span>
-<a name="l00046"></a>00046 } <span class="comment">//init</span>
-<a name="l00047"></a>00047 }; <span class="comment">// struct</span>
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keyword">template</span> <>
-<a name="l00050"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">00050</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><float, 1>
-<a name="l00051"></a>00051 {
-<a name="l00052"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00052</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> <span class="stringliteral">"f_coordinate_matrix_1"</span>;
-<a name="l00055"></a>00055 }
-<a name="l00056"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00056</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00059"></a>00059 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00060"></a>00060 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 std::string source;
-<a name="l00064"></a>00064 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>);
-<a name="l00065"></a>00065 std::string prog_name = program_name();
-<a name="l00066"></a>00066 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00068"></a>00068 <span class="preprocessor"> #endif</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00070"></a>00070 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00072"></a>00072 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00073"></a>00073 } <span class="comment">//if</span>
-<a name="l00074"></a>00074 } <span class="comment">//init</span>
-<a name="l00075"></a>00075 }; <span class="comment">// struct</span>
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078
-<a name="l00080"></a>00080 <span class="keyword">template</span> <>
-<a name="l00081"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">00081</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><double, 128>
-<a name="l00082"></a>00082 {
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">00083</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> <span class="stringliteral">"d_coordinate_matrix_128"</span>;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">00087</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00090"></a>00090 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00091"></a>00091 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 std::string source;
-<a name="l00095"></a>00095 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00096"></a>00096 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>, fp64_ext));
-<a name="l00097"></a>00097 std::string prog_name = program_name();
-<a name="l00098"></a>00098 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00100"></a>00100 <span class="preprocessor"> #endif</span>
-<a name="l00101"></a>00101 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00102"></a>00102 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00103"></a>00103 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00104"></a>00104 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00105"></a>00105 } <span class="comment">//if</span>
-<a name="l00106"></a>00106 } <span class="comment">//init</span>
-<a name="l00107"></a>00107 }; <span class="comment">// struct</span>
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keyword">template</span> <>
-<a name="l00110"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">00110</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><double, 1>
-<a name="l00111"></a>00111 {
-<a name="l00112"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00112</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00113"></a>00113 {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> <span class="stringliteral">"d_coordinate_matrix_1"</span>;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00116</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00119"></a>00119 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00120"></a>00120 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 std::string source;
-<a name="l00124"></a>00124 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00125"></a>00125 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a>, fp64_ext));
-<a name="l00126"></a>00126 std::string prog_name = program_name();
-<a name="l00127"></a>00127 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00129"></a>00129 <span class="preprocessor"> #endif</span>
-<a name="l00130"></a>00130 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00131"></a>00131 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00133"></a>00133 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00134"></a>00134 } <span class="comment">//if</span>
-<a name="l00135"></a>00135 } <span class="comment">//init</span>
-<a name="l00136"></a>00136 }; <span class="comment">// struct</span>
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 } <span class="comment">//namespace kernels</span>
-<a name="l00140"></a>00140 } <span class="comment">//namespace linalg</span>
-<a name="l00141"></a>00141 } <span class="comment">//namespace viennacl</span>
-<a name="l00142"></a>00142 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__operations_8hpp.html b/doc/doxygen/html/coordinate__matrix__operations_8hpp.html
deleted file mode 100644
index 7829eaa..0000000
--- a/doc/doxygen/html/coordinate__matrix__operations_8hpp.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of operations using coordinate_matrix.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="coordinate__matrix__kernels_8h_source.html">viennacl/linalg/kernels/coordinate_matrix_kernels.h</a>"</code><br/>
-
-<p><a href="coordinate__matrix__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">prod_impl</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a79ec888c8ac1026f4591179fdd19e0de"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7984796b04f748d616d1071b0e70850b">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, size_t NUM_THREADS)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#a7984796b04f748d616d1071b0e70850b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afa56b176c5b19331a2fd286cac2f9c92">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#afa56b176c5b19331a2fd286cac2f9c92"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of operations using coordinate_matrix. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__operations_8hpp_source.html b/doc/doxygen/html/coordinate__matrix__operations_8hpp_source.html
deleted file mode 100644
index ff41437..0000000
--- a/doc/doxygen/html/coordinate__matrix__operations_8hpp_source.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/coordinate_matrix_operations.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="coordinate__matrix__kernels_8h.html">viennacl/linalg/kernels/coordinate_matrix_kernels.h</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="comment">// A * x</span>
-<a name="l00045"></a>00045 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00046"></a>00046 vector_expression<const coordinate_matrix<SCALARTYPE, ALIGNMENT>,
-<a name="l00047"></a>00047 <span class="keyword">const</span> vector<SCALARTYPE, VECTOR_ALIGNMENT>,
-<a name="l00048"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">00048</a> op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & mat,
-<a name="l00049"></a>00049 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression<const coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00052"></a>00052 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00053"></a>00053 op_prod >(mat, vec);
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <span class="comment">// A * x</span>
-<a name="l00065"></a>00065 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00066"></a>00066 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00067"></a>00067 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00068"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7984796b04f748d616d1071b0e70850b">00068</a> viennacl::op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & mat,
-<a name="l00069"></a>00069 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00070"></a>00070 <span class="keywordtype">size_t</span> NUM_THREADS)
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00073"></a>00073 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00074"></a>00074 viennacl::op_prod >(mat, vec);
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="comment">//namespace {</span>
-<a name="l00086"></a>00086 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00087"></a><a class="code" href="namespaceviennacl_1_1linalg.html#afa56b176c5b19331a2fd286cac2f9c92">00087</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<TYPE, ALIGNMENT></a> & mat,
-<a name="l00088"></a>00088 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00089"></a>00089 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 assert(mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00092"></a>00092 assert(mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00093"></a>00093 result.<a class="code" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204" title="Resets all entries to zero. Does not change the size of the vector.">clear</a>();
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <span class="comment">//std::cout << "prod(coordinate_matrix" << ALIGNMENT << ", vector) called with internal_nnz=" << mat.internal_nnz() << std::endl;</span>
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::coordinate_matrix<TYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"vec_mul"</span>);
-<a name="l00098"></a>00098 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> thread_num = 256; <span class="comment">//k.local_work_size(0);</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, thread_num);
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 64 * thread_num); <span class="comment">//64 work groups are hard-coded for now. Gives reasonable performance in most cases</span>
-<a name="l00103"></a>00103 <span class="comment">//k.global_work_size(0, thread_num); //Only one work group</span>
-<a name="l00104"></a>00104 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8" title="Returns the OpenCL handle to the (row, column) index array.">handle12</a>(), mat, mat.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0" title="Returns the OpenCL handle to the group start index array.">handle3</a>(),
-<a name="l00105"></a>00105 vec,
-<a name="l00106"></a>00106 result,
-<a name="l00107"></a>00107 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(cl_uint)*thread_num),
-<a name="l00108"></a>00108 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE)*thread_num)) );
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111 <span class="comment">//};</span>
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 } <span class="comment">//namespace linalg</span>
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116
-<a name="l00121"></a>00121 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00122"></a>00122 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00123"></a>00123 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00124"></a><a class="code" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">00124</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00125"></a>00125 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00126"></a>00126 viennacl::op_prod> & proxy)
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <span class="comment">// check for the special case x = A * x</span>
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00132"></a>00132 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00133"></a>00133 *<span class="keyword">this</span> = result;
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 <span class="keywordflow">else</span>
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00139"></a>00139 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="comment">//v += A * x</span>
-<a name="l00149"></a>00149 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00150"></a>00150 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00151"></a>00151 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00152"></a><a class="code" href="classviennacl_1_1vector.html#a558d5da8e439a7fac22354b25b84a458">00152</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00153"></a>00153 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00154"></a>00154 op_prod> & proxy)
-<a name="l00155"></a>00155 {
-<a name="l00156"></a>00156 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00157"></a>00157 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00158"></a>00158 *<span class="keyword">this</span> += result;
-<a name="l00159"></a>00159 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00160"></a>00160 }
-<a name="l00161"></a>00161
-<a name="l00166"></a>00166 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00167"></a>00167 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00168"></a>00168 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00169"></a><a class="code" href="classviennacl_1_1vector.html#a828077e1b1da533e174a7194f8a9210b">00169</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00170"></a>00170 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00171"></a>00171 op_prod> & proxy)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.get_lhs().size1());
-<a name="l00174"></a>00174 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00175"></a>00175 *<span class="keyword">this</span> -= result;
-<a name="l00176"></a>00176 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180 <span class="comment">//free functions:</span>
-<a name="l00185"></a>00185 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00186"></a>00186 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00187"></a>00187 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00188"></a><a class="code" href="classviennacl_1_1vector.html#a625df272798e5484b2b99645c164f618">00188</a> <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00189"></a>00189 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00190"></a>00190 op_prod> & proxy)
-<a name="l00191"></a>00191 {
-<a name="l00192"></a>00192 assert(proxy.get_lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00193"></a>00193 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00194"></a>00194 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00195"></a>00195 result += *<span class="keyword">this</span>;
-<a name="l00196"></a>00196 <span class="keywordflow">return</span> result;
-<a name="l00197"></a>00197 }
-<a name="l00198"></a>00198
-<a name="l00203"></a>00203 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00204"></a>00204 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00205"></a>00205 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00206"></a><a class="code" href="classviennacl_1_1vector.html#a38a33c6969ccc333a994d55cce743af9">00206</a> <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00207"></a>00207 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00208"></a>00208 op_prod> & proxy)
-<a name="l00209"></a>00209 {
-<a name="l00210"></a>00210 assert(proxy.get_lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00211"></a>00211 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00212"></a>00212 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00213"></a>00213 result = *<span class="keyword">this</span> - result;
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> result;
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 } <span class="comment">//namespace viennacl</span>
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__source_8h.html b/doc/doxygen/html/coordinate__matrix__source_8h.html
deleted file mode 100644
index 3c772e5..0000000
--- a/doc/doxygen/html/coordinate__matrix__source_8h.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="coordinate__matrix__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/coordinate__matrix__source_8h_source.html b/doc/doxygen/html/coordinate__matrix__source_8h_source.html
deleted file mode 100644
index 162d087..0000000
--- a/doc/doxygen/html/coordinate__matrix__source_8h_source.html
+++ /dev/null
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/coordinate_matrix_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="coordinate__matrix__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"//segmented parallel reduction. At present restricted to up to 256 threads\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"void segmented_parallel_reduction(unsigned int row, \n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">" float val, \n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">" __local unsigned int * shared_rows, \n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __local float * inter_results) \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">"{ \n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" //barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" shared_rows[get_local_id(0)] = row; \n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" inter_results[get_local_id(0)] = val; \n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" float left = 0;\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" \n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" if( get_local_id(0) >= 1 && row == shared_rows[get_local_id(0) - 1] ) { left = inter_results[get_local_id(0) - 1]; } \n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" if( get_local_id(0) >= 2 && row == shared_rows[get_local_id(0) - 2] ) { left = inter_results[get_local_id(0) - 2]; } \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" if( get_local_id(0) >= 4 && row == shared_rows[get_local_id(0) - 4] ) { left = inter_results[get_local_id(0) - 4]; } \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" if( get_local_id(0) >= 8 && row == shared_rows[get_local_id(0) - 8] ) { left = inter_results[get_local_id(0) - 8]; } \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" if( get_local_id(0) >= 16 && row == shared_rows[get_local_id(0) - 16] ) { left = inter_results[get_local_id(0) - 16]; } \n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if( get_local_id(0) >= 32 && row == shared_rows[get_local_id(0) - 32] ) { left = inter_results[get_local_id(0) - 32]; } \n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" if( get_local_id(0) >= 64 && row == shared_rows[get_local_id(0) - 64] ) { left = inter_results[get_local_id(0) - 64]; } \n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" if( get_local_id(0) >= 128 && row == shared_rows[get_local_id(0) - 128] ) { left = inter_results[get_local_id(0) - 128]; } \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" //if( get_local_id(0) >= 256 && row == shared_rows[get_local_id(0) - 256] ) { left = inter_results[get_local_id(0) - 256]; } \n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" //barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" //inter_results[get_local_id(0)] += left; left = 0;\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" //barrier(CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">"}\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">"__kernel void vec_mul( \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" __global const uint2 * coords, //(row_index, column_index) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" __global const float * elements, \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" __global const uint * group_boundaries,\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" __global float * result, \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" __local unsigned int * shared_rows, \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" __local float * inter_results) \n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"{ \n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">" uint2 tmp; \n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">" float val;\n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">" uint last_index = get_local_size(0) - 1;\n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">" uint group_start = group_boundaries[get_group_id(0)];\n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">" uint group_end = group_boundaries[get_group_id(0) + 1];\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">" uint k_end = 1 + (group_end - group_start - 1) / get_local_size(0); // -1 in order to have correct behavior if group_end - group_start == j * get_local_size(0)\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">" uint local_index = 0;\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">" for (uint k = 0; k < k_end; ++k)\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" { \n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" \n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" local_index = group_start + k * get_local_size(0) + get_local_id(0); \n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" \n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" if (local_index < group_end)\n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" {\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" tmp = coords[local_index]; \n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" val = elements[local_index] * vector[tmp.y]; \n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" }\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" else\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" {\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" tmp.x = 0;\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" tmp.y = 0;\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" val = 0;\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" }\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" //check for carry from previous loop run: \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" if (get_local_id(0) == 0 && k > 0)\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" { \n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" if (tmp.x == shared_rows[last_index]) \n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" val += inter_results[last_index]; \n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" else \n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" result[shared_rows[last_index]] += inter_results[last_index]; \n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" } \n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" segmented_parallel_reduction(tmp.x, val, shared_rows, inter_results); //all threads have to enter this function\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (get_local_id(0) != last_index &&\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" shared_rows[get_local_id(0)] != shared_rows[get_local_id(0) + 1] &&\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" inter_results[get_local_id(0)] != 0) \n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" { \n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" result[tmp.x] += inter_results[get_local_id(0)]; \n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" }\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" \n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" } //for k\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" \n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" if (get_local_id(0) == last_index && inter_results[last_index] != 0) \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" result[tmp.x] += inter_results[last_index]; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"}\n"</span>
-<a name="l00118"></a>00118 ; <span class="comment">//coordinate_matrix_align1_vec_mul</span>
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 } <span class="comment">//namespace kernels</span>
-<a name="l00121"></a>00121 } <span class="comment">//namespace linalg</span>
-<a name="l00122"></a>00122 } <span class="comment">//namespace viennacl</span>
-<a name="l00123"></a>00123 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/device_8hpp.html b/doc/doxygen/html/device_8hpp.html
deleted file mode 100644
index 413f0ea..0000000
--- a/doc/doxygen/html/device_8hpp.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Represents an OpenCL device within ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <stdio.h></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <string></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include <assert.h></code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="error_8hpp_source.html">viennacl/ocl/error.hpp</a>"</code><br/>
-
-<p><a href="device_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a compute device (e.g. a GPU). <a href="classviennacl_1_1ocl_1_1device.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Represents an OpenCL device within ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/device_8hpp_source.html b/doc/doxygen/html/device_8hpp_source.html
deleted file mode 100644
index 4f8b1d7..0000000
--- a/doc/doxygen/html/device_8hpp_source.html
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/device.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="device_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_DEVICE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_DEVICE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include<stdio.h></span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="preprocessor">#include <vector></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <string></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <sstream></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include <assert.h></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="error_8hpp.html" title="Error handling for the OpenCL layer of ViennaCL.">viennacl/ocl/error.hpp</a>"</span>
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>viennacl
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">namespace </span>ocl
-<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041
-<a name="l00045"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html">00045</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">public</span>:
-<a name="l00048"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">00048</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>() : device_(0) {}
-<a name="l00049"></a>00049
-<a name="l00050"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a17858dabba4d274000c38bc42de8487c">00050</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>(cl_device_id dev) : device_(dev)
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Creating device object (CTOR with cl_device_id)"</span> << std::endl;
-<a name="l00054"></a>00054 <span class="preprocessor"> #endif</span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6" title="Initializes the class from a given device ID.">init</a>(dev);
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00058"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a58ac501d01e9cb8eac21a831e8f0874c">00058</a> <a class="code" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a> & other)
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Creating device object (Copy CTOR)"</span> << std::endl;
-<a name="l00062"></a>00062 <span class="preprocessor"> #endif</span>
-<a name="l00063"></a>00063 <span class="preprocessor"></span> device_ = other.device_;
-<a name="l00064"></a>00064 <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6" title="Initializes the class from a given device ID.">init</a>(device_);
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066
-<a name="l00068"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">00068</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6" title="Initializes the class from a given device ID.">init</a>(cl_device_id dev)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 cl_int err;
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="comment">//query a little bit of info:</span>
-<a name="l00073"></a>00073 err = clGetDeviceInfo(dev, CL_DEVICE_MAX_WORK_GROUP_SIZE, <span class="keyword">sizeof</span>(<span class="keywordtype">size_t</span>), &max_work_group_size_, NULL);
-<a name="l00074"></a>00074 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00075"></a>00075 err = clGetDeviceInfo(dev, CL_DEVICE_MAX_COMPUTE_UNITS, <span class="keyword">sizeof</span>(cl_uint), &compute_units_, NULL);
-<a name="l00076"></a>00076 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00077"></a>00077 err = clGetDeviceInfo(dev, CL_DEVICE_TYPE, <span class="keyword">sizeof</span>(cl_device_type), &type_, NULL);
-<a name="l00078"></a>00078 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00079"></a>00079 err = clGetDeviceInfo(dev, CL_DEVICE_GLOBAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &global_memory_, NULL);
-<a name="l00080"></a>00080 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00081"></a>00081 err = clGetDeviceInfo(dev, CL_DEVICE_MAX_MEM_ALLOC_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &max_memory_alloc_, NULL);
-<a name="l00082"></a>00082 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00083"></a>00083 err = clGetDeviceInfo(dev, CL_DEVICE_LOCAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &local_memory_, NULL);
-<a name="l00084"></a>00084 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00085"></a>00085 }
-<a name="l00086"></a>00086
-<a name="l00088"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">00088</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634" title="Returns true if the device supports double precision.">double_support</a>()<span class="keyword"> const</span>
-<a name="l00089"></a>00089 <span class="keyword"> </span>{
-<a name="l00090"></a>00090 <span class="keywordtype">char</span> buffer[1024];
-<a name="l00091"></a>00091 <span class="keywordtype">bool</span> ret = <span class="keyword">false</span>;
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="comment">//get extensions and search for double precision</span>
-<a name="l00094"></a>00094 clGetDeviceInfo(device_, CL_DEVICE_EXTENSIONS, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00095"></a>00095 std::string extensions(buffer);
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (extensions.find(<span class="stringliteral">"cl_khr_fp64"</span>) != std::string::npos
-<a name="l00097"></a>00097 || extensions.find(<span class="stringliteral">"cl_amd_fp64"</span>) != std::string::npos)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 ret = <span class="keyword">true</span>;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Device extensions: "</span> << std::endl;
-<a name="l00104"></a>00104 std::cout << extensions << std::endl;
-<a name="l00105"></a>00105 <span class="keywordflow">if</span> (ret)
-<a name="l00106"></a>00106 std::cout << <span class="stringliteral">"ViennaCL: Device "</span> << <a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>() << <span class="stringliteral">" supports double precision."</span> << std::endl;
-<a name="l00107"></a>00107 <span class="keywordflow">else</span>
-<a name="l00108"></a>00108 std::cout << <span class="stringliteral">"ViennaCL: No double precision for device "</span> << <a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>() << <span class="stringliteral">"."</span> << std::endl;
-<a name="l00109"></a>00109 <span class="preprocessor"> #endif</span>
-<a name="l00110"></a>00110 <span class="preprocessor"></span>
-<a name="l00111"></a>00111 <span class="keywordflow">return</span> ret;
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">00114</a> std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>()<span class="keyword"> const</span>
-<a name="l00115"></a>00115 <span class="keyword"> </span>{
-<a name="l00116"></a>00116 <span class="keywordtype">char</span> buffer[1024];
-<a name="l00117"></a>00117 clGetDeviceInfo(device_, CL_DEVICE_EXTENSIONS, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00118"></a>00118 std::string extensions(buffer);
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (extensions.find(<span class="stringliteral">"cl_amd_fp64"</span>) != std::string::npos) <span class="comment">//AMD extension</span>
-<a name="l00121"></a>00121 <span class="keywordflow">return</span> <span class="stringliteral">"cl_amd_fp64"</span>;
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (extensions.find(<span class="stringliteral">"cl_khr_fp64"</span>) != std::string::npos) <span class="comment">//Khronos-certified standard extension for double precision</span>
-<a name="l00124"></a>00124 <span class="keywordflow">return</span> <span class="stringliteral">"cl_khr_fp64"</span>;
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="keywordflow">return</span> <span class="stringliteral">""</span>;
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<a name="l00130"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">00130</a> cl_device_id <a class="code" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06" title="Returns the OpenCL device id.">id</a>()<span class="keyword"> const</span>
-<a name="l00131"></a>00131 <span class="keyword"> </span>{
-<a name="l00132"></a>00132 assert(device_ != 0);
-<a name="l00133"></a>00133 <span class="keywordflow">return</span> device_;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135
-<a name="l00137"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">00137</a> std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>()<span class="keyword"> const</span>
-<a name="l00138"></a>00138 <span class="keyword"> </span>{
-<a name="l00139"></a>00139 std::ostringstream oss;
-<a name="l00140"></a>00140 <span class="keywordtype">char</span> buffer[1024];
-<a name="l00141"></a>00141 cl_int err;
-<a name="l00142"></a>00142 err = clGetDeviceInfo(device_, CL_DEVICE_NAME, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, &buffer, NULL);
-<a name="l00143"></a>00143 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00144"></a>00144 oss << buffer;
-<a name="l00145"></a>00145 <span class="keywordflow">return</span> oss.str();
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147
-<a name="l00149"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">00149</a> std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88" title="Returns the driver version.">driver_version</a>()<span class="keyword"> const</span>
-<a name="l00150"></a>00150 <span class="keyword"> </span>{
-<a name="l00151"></a>00151 std::ostringstream oss;
-<a name="l00152"></a>00152 <span class="keywordtype">char</span> buffer[1024]; buffer[0] = 0;
-<a name="l00153"></a>00153 cl_int err;
-<a name="l00154"></a>00154 err = clGetDeviceInfo(device_, CL_DRIVER_VERSION, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00155"></a>00155 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00156"></a>00156 oss << buffer;
-<a name="l00157"></a>00157 <span class="keywordflow">return</span> oss.str();
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00161"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">00161</a> cl_uint <a class="code" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99" title="Returns the number of compute units on the device.">max_compute_units</a>()<span class="keyword"> const</span>
-<a name="l00162"></a>00162 <span class="keyword"> </span>{
-<a name="l00163"></a>00163 <span class="keywordflow">return</span> compute_units_;
-<a name="l00164"></a>00164 }
-<a name="l00165"></a>00165
-<a name="l00167"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">00167</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f" title="Returns the maximum work group size for the device.">max_workgroup_size</a>()<span class="keyword"> const</span>
-<a name="l00168"></a>00168 <span class="keyword"> </span>{
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> max_work_group_size_;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00173"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">00173</a> cl_ulong <a class="code" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88" title="Returns the global memory for the device.">global_memory</a>()<span class="keyword"> const</span>
-<a name="l00174"></a>00174 <span class="keyword"> </span>{
-<a name="l00175"></a>00175 <span class="keywordflow">return</span> global_memory_;
-<a name="l00176"></a>00176 }
-<a name="l00177"></a>00177
-<a name="l00179"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">00179</a> cl_ulong <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c" title="Returns the local memory for the device.">local_memory</a>()<span class="keyword"> const</span>
-<a name="l00180"></a>00180 <span class="keyword"> </span>{
-<a name="l00181"></a>00181 <span class="keywordflow">return</span> local_memory_;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183
-<a name="l00185"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">00185</a> cl_ulong <a class="code" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280" title="Returns the maximum allocable memory for the device.">max_allocable_memory</a>()<span class="keyword"> const</span>
-<a name="l00186"></a>00186 <span class="keyword"> </span>{
-<a name="l00187"></a>00187 <span class="keywordflow">return</span> max_memory_alloc_;
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189
-<a name="l00191"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">00191</a> std::string <a class="code" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62" title="Returns an info string with a few properties of the device.">info</a>()<span class="keyword"> const</span>
-<a name="l00192"></a>00192 <span class="keyword"> </span>{
-<a name="l00193"></a>00193 std::ostringstream oss;
-<a name="l00194"></a>00194 <span class="keywordtype">char</span> buffer[1024]; buffer[0] = 0;
-<a name="l00195"></a>00195 cl_int err;
-<a name="l00196"></a>00196 cl_uint vendor_id;
-<a name="l00197"></a>00197 cl_ulong local_mem_size;
-<a name="l00198"></a>00198 cl_ulong global_mem_size;
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 err = clGetDeviceInfo(device_, CL_DEVICE_VENDOR_ID, <span class="keyword">sizeof</span>(cl_uint), &vendor_id, NULL);
-<a name="l00201"></a>00201 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00202"></a>00202 oss << <span class="stringliteral">"CL Device Vendor ID: "</span> << vendor_id << std::endl;
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 err = clGetDeviceInfo(device_, CL_DEVICE_NAME, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00205"></a>00205 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00206"></a>00206 oss << <span class="stringliteral">"CL Device Name: "</span> << buffer << std::endl;
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 err = clGetDeviceInfo(device_, CL_DRIVER_VERSION, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>)*1024, buffer, NULL);
-<a name="l00209"></a>00209 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00210"></a>00210 std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = buffer;
-<a name="l00211"></a>00211 oss << <span class="stringliteral">"CL Driver Version: "</span> << test << std::endl;
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 oss << <span class="stringliteral">"--------------------------------"</span> << std::endl;
-<a name="l00214"></a>00214
-<a name="l00215"></a>00215 oss << <span class="stringliteral">"CL Device Max Compute Units: "</span> << compute_units_ << std::endl;
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 <span class="comment">// err = clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, sizeof(char)*1024, buffer, NULL);</span>
-<a name="l00218"></a>00218 <span class="comment">// CL_ERR_CHECK(err);</span>
-<a name="l00219"></a>00219 <span class="comment">// oss << "CL Device Max Work Item Dimensions: " << buffer << std::endl;</span>
-<a name="l00220"></a>00220 <span class="comment">// </span>
-<a name="l00221"></a>00221 <span class="comment">// err = clGetDeviceInfo(device, CL_DEVICE_MAX_WORK_ITEM_SIZES, sizeof(char)*1024, buffer, NULL);</span>
-<a name="l00222"></a>00222 <span class="comment">// CL_ERR_CHECK(err);</span>
-<a name="l00223"></a>00223 <span class="comment">// oss << "CL Device Max Work Item Sizes: " << buffer << std::endl;</span>
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 oss << <span class="stringliteral">"CL Device Max Work Group Size: "</span> << max_work_group_size_ << std::endl;
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227 err = clGetDeviceInfo(device_, CL_DEVICE_GLOBAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &global_mem_size, NULL);
-<a name="l00228"></a>00228 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00229"></a>00229 oss << <span class="stringliteral">"CL Device Global Mem Size: "</span> << global_mem_size << std::endl;
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 err = clGetDeviceInfo(device_, CL_DEVICE_LOCAL_MEM_SIZE, <span class="keyword">sizeof</span>(cl_ulong), &local_mem_size, NULL);
-<a name="l00232"></a>00232 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00233"></a>00233 oss << <span class="stringliteral">"CL Device Local Mem Size: "</span> << local_mem_size << std::endl;
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="comment">//return info string:</span>
-<a name="l00236"></a>00236 std::string ret(oss.str());
-<a name="l00237"></a>00237 <span class="keywordflow">return</span> ret;
-<a name="l00238"></a>00238 }
-<a name="l00239"></a>00239
-<a name="l00240"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">00240</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">max_work_group_size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> max_work_group_size_; }
-<a name="l00241"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">00241</a> cl_uint <a class="code" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">compute_units</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> compute_units_; }
-<a name="l00242"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">00242</a> cl_device_type <a class="code" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">type</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }
-<a name="l00243"></a>00243
-<a name="l00244"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">00244</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">operator==</a>(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00245"></a>00245 <span class="keyword"> </span>{
-<a name="l00246"></a>00246 <span class="keywordflow">return</span> device_ == other.device_;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248
-<a name="l00249"></a><a class="code" href="classviennacl_1_1ocl_1_1device.html#a06e1d466be32d6b0072a8a8e23b339f9">00249</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">operator==</a>(cl_device_id other)<span class="keyword"> const</span>
-<a name="l00250"></a>00250 <span class="keyword"> </span>{
-<a name="l00251"></a>00251 <span class="keywordflow">return</span> device_ == other;
-<a name="l00252"></a>00252 }
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="keyword">private</span>:
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 cl_device_id device_;
-<a name="l00257"></a>00257 <span class="keywordtype">size_t</span> max_work_group_size_;
-<a name="l00258"></a>00258 cl_uint compute_units_;
-<a name="l00259"></a>00259 cl_device_type type_; <span class="comment">//device type</span>
-<a name="l00260"></a>00260 cl_ulong max_memory_alloc_;
-<a name="l00261"></a>00261 cl_ulong global_memory_;
-<a name="l00262"></a>00262 cl_ulong local_memory_;
-<a name="l00263"></a>00263 };
-<a name="l00264"></a>00264
-<a name="l00265"></a>00265 } <span class="comment">//namespace ocl</span>
-<a name="l00266"></a>00266 } <span class="comment">//namespace viennacl</span>
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/direct__solve_8hpp.html b/doc/doxygen/html/direct__solve_8hpp.html
deleted file mode 100644
index a33c25b..0000000
--- a/doc/doxygen/html/direct__solve_8hpp.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of dense direct solvers are found here.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix_8hpp_source.html">viennacl/matrix.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_solve_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-
-<p><a href="direct__solve_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18293ef61ad46907177e280d4b1d680a">inplace_solve</a> (const matrix< SCALARTYPE, F1, A1 > &mat, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems. <a href="#a18293ef61ad46907177e280d4b1d680a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0ec9d2642d98a204f1de4fdad9063c14">inplace_solve</a> (const matrix< SCALARTYPE, F1, A1 > &mat, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems. <a href="#a0ec9d2642d98a204f1de4fdad9063c14"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad849b3114b76777bb0162ddf3fe8eba2">inplace_solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. <a href="#ad849b3114b76777bb0162ddf3fe8eba2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">inplace_solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. <a href="#aae8acccfb7520c1c75d8bbb10130aa4a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1fa59efa7e0a65e6e9c949b441696af1">inplace_solve</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a373c29fa2cb02177b1450d36eabeb265">inplace_solve</a> (const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. <a href="#a373c29fa2cb02177b1450d36eabeb265"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a658f2de0ab6804ebabbc4248adc2d927">solve</a> (const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a658f2de0ab6804ebabbc4248adc2d927"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a13d7be38f0fbef200ccbe90d9240e542">solve</a> (const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B^T, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a13d7be38f0fbef200ccbe90d9240e542"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">solve</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(mat, vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a9f5cb80858484131ecb73e867b2bf794"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aec73c039978029c091e70224bf283ed5">solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#aec73c039978029c091e70224bf283ed5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18da6b35b9790a1acd824dee6a8fb76a">solve</a> (const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy_A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy_B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a18da6b35b9790a1acd824dee6a8fb76a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#add76ce64e200f9193156a98a15bf42fd">solve</a> (const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#add76ce64e200f9193156a98a15bf42fd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">lu_factorize</a> (matrix< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU factorization of a dense matrix. <a href="#a2aa3e7727b42bd95f5d1e5dd5366f807"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">lu_substitute</a> (matrix< SCALARTYPE, F1, ALIGNMENT_A > const &A, matrix< SCALARTYPE, F2, ALIGNMENT_B > &B)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs. <a href="#a1407e42bdce9d821baaf5d4163a09dd1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">lu_substitute</a> (matrix< SCALARTYPE, F, ALIGNMENT > const &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs. <a href="#a9da85acf3d7f22c869dfd52791a25d55"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of dense direct solvers are found here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/direct__solve_8hpp_source.html b/doc/doxygen/html/direct__solve_8hpp_source.html
deleted file mode 100644
index 422a742..0000000
--- a/doc/doxygen/html/direct__solve_8hpp_source.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/direct_solve.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="direct__solve_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_DIRECT_SOLVE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_DIRECT_SOLVE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="matrix_8hpp.html" title="Implementation of the dense matrix class.">viennacl/matrix.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="matrix__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="matrix__solve__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver...">viennacl/tools/matrix_solve_kernel_class_deducer.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00036"></a>00036
-<a name="l00041"></a>00041 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00042"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a18293ef61ad46907177e280d4b1d680a">00042</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a> & mat,
-<a name="l00043"></a>00043 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> & B,
-<a name="l00044"></a>00044 SOLVERTAG)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00047"></a>00047 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00050"></a>00050 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType KernelClass;
-<a name="l00051"></a>00051 KernelClass::init();
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 std::stringstream ss;
-<a name="l00054"></a>00054 ss << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_solve"</span>;
-<a name="l00055"></a>00055 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00058"></a>00058 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00059"></a>00059 B, B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()));
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061
-<a name="l00067"></a>00067 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00068"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0ec9d2642d98a204f1de4fdad9063c14">00068</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a> & mat,
-<a name="l00069"></a>00069 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00070"></a>00070 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00071"></a>00071 op_trans> & B,
-<a name="l00072"></a>00072 SOLVERTAG)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00075"></a>00075 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.lhs().size2());
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00078"></a>00078 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType KernelClass;
-<a name="l00079"></a>00079 KernelClass::init();
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 std::stringstream ss;
-<a name="l00082"></a>00082 ss << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_trans_solve"</span>;
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.lhs().size1() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00086"></a>00086 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00087"></a>00087 B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="comment">//upper triangular solver for transposed lower triangular matrices</span>
-<a name="l00096"></a>00096 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00097"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad849b3114b76777bb0162ddf3fe8eba2">00097</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00098"></a>00098 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00099"></a>00099 op_trans> & proxy,
-<a name="l00100"></a>00100 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> & B,
-<a name="l00101"></a>00101 SOLVERTAG)
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 assert(proxy.lhs().size1() == proxy.lhs().size2());
-<a name="l00104"></a>00104 assert(proxy.lhs().size2() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00107"></a>00107 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType KernelClass;
-<a name="l00108"></a>00108 KernelClass::init();
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 std::stringstream ss;
-<a name="l00111"></a>00111 ss << <span class="stringliteral">"trans_"</span> << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_solve"</span>;
-<a name="l00112"></a>00112 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00115"></a>00115 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
-<a name="l00116"></a>00116 B, B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()));
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118
-<a name="l00124"></a>00124 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00125"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">00125</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00126"></a>00126 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00127"></a>00127 op_trans> & proxy,
-<a name="l00128"></a>00128 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00129"></a>00129 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a>,
-<a name="l00130"></a>00130 op_trans> & B,
-<a name="l00131"></a>00131 SOLVERTAG)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 assert(proxy.lhs().size1() == proxy.lhs().size2());
-<a name="l00134"></a>00134 assert(proxy.lhs().size2() == B.lhs().size2());
-<a name="l00135"></a>00135
-<a name="l00136"></a>00136 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F1, A1></a>,
-<a name="l00137"></a>00137 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, A2></a> >::ResultType KernelClass;
-<a name="l00138"></a>00138 KernelClass::init();
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 std::stringstream ss;
-<a name="l00141"></a>00141 ss << <span class="stringliteral">"trans_"</span> << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_trans_solve"</span>;
-<a name="l00142"></a>00142 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, B.lhs().size1() * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00145"></a>00145 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
-<a name="l00146"></a>00146 B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00150"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1fa59efa7e0a65e6e9c949b441696af1">00150</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat,
-<a name="l00151"></a>00151 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00152"></a>00152 SOLVERTAG)
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00155"></a>00155 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 std::stringstream ss;
-<a name="l00160"></a>00160 ss << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_triangular_substitute_inplace"</span>;
-<a name="l00161"></a>00161 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00164"></a>00164 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec));
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00172"></a>00172 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> SOLVERTAG>
-<a name="l00173"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a373c29fa2cb02177b1450d36eabeb265">00173</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00174"></a>00174 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00175"></a>00175 op_trans> & proxy,
-<a name="l00176"></a>00176 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00177"></a>00177 SOLVERTAG)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 assert(proxy.lhs().size1() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00180"></a>00180 assert(proxy.lhs().size2() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 std::stringstream ss;
-<a name="l00185"></a>00185 ss << <span class="stringliteral">"trans_"</span> << <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">SOLVERTAG::name</a>() << <span class="stringliteral">"_triangular_substitute_inplace"</span>;
-<a name="l00186"></a>00186 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), ss.str());
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00189"></a>00189 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(),
-<a name="l00190"></a>00190 proxy.lhs().internal_size1(), proxy.lhs().internal_size2(), vec));
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00194"></a>00194
-<a name="l00201"></a>00201 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00202"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a658f2de0ab6804ebabbc4248adc2d927">00202</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a> & A,
-<a name="l00203"></a>00203 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> & B,
-<a name="l00204"></a>00204 TAG <span class="keyword">const</span> & tag)
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00207"></a>00207 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_A></a> result(B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00208"></a>00208 result = B;
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, result, tag);
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 <span class="keywordflow">return</span> result;
-<a name="l00213"></a>00213 }
-<a name="l00214"></a>00214
-<a name="l00221"></a>00221 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00222"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a13d7be38f0fbef200ccbe90d9240e542">00222</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a> & A,
-<a name="l00223"></a>00223 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00224"></a>00224 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00225"></a>00225 op_trans> & proxy,
-<a name="l00226"></a>00226 TAG <span class="keyword">const</span> & tag)
-<a name="l00227"></a>00227 {
-<a name="l00228"></a>00228 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00229"></a>00229 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> result(proxy.lhs().size2(), proxy.lhs().size1());
-<a name="l00230"></a>00230 result = proxy;
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, result, tag);
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> result;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00243"></a>00243 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00244"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">00244</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat,
-<a name="l00245"></a>00245 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00246"></a>00246 TAG <span class="keyword">const</span> & tag)
-<a name="l00247"></a>00247 {
-<a name="l00248"></a>00248 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00249"></a>00249 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00250"></a>00250 result = vec;
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(mat, result, tag);
-<a name="l00253"></a>00253
-<a name="l00254"></a>00254 <span class="keywordflow">return</span> result;
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257
-<a name="l00259"></a>00259
-<a name="l00265"></a>00265 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00266"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aec73c039978029c091e70224bf283ed5">00266</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00267"></a>00267 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00268"></a>00268 op_trans> & proxy,
-<a name="l00269"></a>00269 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> & B,
-<a name="l00270"></a>00270 TAG <span class="keyword">const</span> & tag)
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00273"></a>00273 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> result(B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00274"></a>00274 result = B;
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(proxy, result, tag);
-<a name="l00277"></a>00277
-<a name="l00278"></a>00278 <span class="keywordflow">return</span> result;
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281
-<a name="l00288"></a>00288 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B, <span class="keyword">typename</span> TAG>
-<a name="l00289"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a18da6b35b9790a1acd824dee6a8fb76a">00289</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00290"></a>00290 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a>,
-<a name="l00291"></a>00291 op_trans> & proxy_A,
-<a name="l00292"></a>00292 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00293"></a>00293 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a>,
-<a name="l00294"></a>00294 op_trans> & proxy_B,
-<a name="l00295"></a>00295 TAG <span class="keyword">const</span> & tag)
-<a name="l00296"></a>00296 {
-<a name="l00297"></a>00297 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00298"></a>00298 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> result(proxy_B.lhs().size2(), proxy_B.lhs().size1());
-<a name="l00299"></a>00299 result = <a class="code" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c" title="Returns an expression template class representing a transposed matrix.">trans</a>(proxy_B.lhs());
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(proxy_A, result, tag);
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <span class="keywordflow">return</span> result;
-<a name="l00304"></a>00304 }
-<a name="l00305"></a>00305
-<a name="l00312"></a>00312 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT, <span class="keyword">typename</span> TAG>
-<a name="l00313"></a><a class="code" href="namespaceviennacl_1_1linalg.html#add76ce64e200f9193156a98a15bf42fd">00313</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00314"></a>00314 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00315"></a>00315 op_trans> & proxy,
-<a name="l00316"></a>00316 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00317"></a>00317 TAG <span class="keyword">const</span> & tag)
-<a name="l00318"></a>00318 {
-<a name="l00319"></a>00319 <span class="comment">// do an inplace solve on the result vector:</span>
-<a name="l00320"></a>00320 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00321"></a>00321 result = vec;
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(proxy, result, tag);
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325 <span class="keywordflow">return</span> result;
-<a name="l00326"></a>00326 }
-<a name="l00327"></a>00327
-<a name="l00328"></a>00328
-<a name="l00330"></a>00330
-<a name="l00334"></a>00334 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00335"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">00335</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807" title="LU factorization of a dense matrix.">lu_factorize</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat)
-<a name="l00336"></a>00336 {
-<a name="l00337"></a>00337 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00340"></a>00340
-<a name="l00341"></a>00341 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"lu_factorize"</span>);
-<a name="l00342"></a>00342
-<a name="l00343"></a>00343 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00344"></a>00344 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()));
-<a name="l00345"></a>00345 }
-<a name="l00346"></a>00346
-<a name="l00347"></a>00347
-<a name="l00353"></a>00353 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_A, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_B>
-<a name="l00354"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">00354</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1" title="LU substitution for the system LU = rhs.">lu_substitute</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F1, ALIGNMENT_A></a> <span class="keyword">const</span> & A,
-<a name="l00355"></a>00355 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F2, ALIGNMENT_B></a> & B)
-<a name="l00356"></a>00356 {
-<a name="l00357"></a>00357 assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00358"></a>00358 assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00359"></a>00359 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, B, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>());
-<a name="l00360"></a>00360 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(A, B, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a>());
-<a name="l00361"></a>00361 }
-<a name="l00362"></a>00362
-<a name="l00368"></a>00368 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VEC_ALIGNMENT>
-<a name="l00369"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">00369</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1" title="LU substitution for the system LU = rhs.">lu_substitute</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> <span class="keyword">const</span> & mat,
-<a name="l00370"></a>00370 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, VEC_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00371"></a>00371 {
-<a name="l00372"></a>00372 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00373"></a>00373 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>());
-<a name="l00374"></a>00374 <a class="code" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a>());
-<a name="l00375"></a>00375 }
-<a name="l00376"></a>00376
-<a name="l00377"></a>00377 }
-<a name="l00378"></a>00378 }
-<a name="l00379"></a>00379
-<a name="l00380"></a>00380 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/doxygen.css b/doc/doxygen/html/doxygen.css
deleted file mode 100644
index 658686f..0000000
--- a/doc/doxygen/html/doxygen.css
+++ /dev/null
@@ -1,656 +0,0 @@
-/* The standard CSS for doxygen */
-
-body, table, div, p, dl {
- font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
- font-size: 12px;
-}
-
-/* @group Heading Levels */
-
-h1 {
- font-size: 150%;
-}
-
-h2 {
- font-size: 120%;
-}
-
-h3 {
- font-size: 100%;
-}
-
-dt {
- font-weight: bold;
-}
-
-div.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
-}
-
-p.startli, p.startdd, p.starttd {
- margin-top: 2px;
-}
-
-p.endli {
- margin-bottom: 0px;
-}
-
-p.enddd {
- margin-bottom: 4px;
-}
-
-p.endtd {
- margin-bottom: 2px;
-}
-
-/* @end */
-
-caption {
- font-weight: bold;
-}
-
-span.legend {
- font-size: 70%;
- text-align: center;
-}
-
-h3.version {
- font-size: 90%;
- text-align: center;
-}
-
-div.qindex, div.navtab{
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
- margin: 2px;
- padding: 2px;
-}
-
-div.qindex, div.navpath {
- width: 100%;
- line-height: 140%;
-}
-
-div.navtab {
- margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
- color: #3D578C;
- font-weight: normal;
- text-decoration: none;
-}
-
-.contents a:visited {
- color: #4665A2;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-a.qindex {
- font-weight: bold;
-}
-
-a.qindexHL {
- font-weight: bold;
- background-color: #9CAFD4;
- color: #ffffff;
- border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
- color: #ffffff;
-}
-
-a.el {
- font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code {
- color: #4665A2;
-}
-
-a.codeRef {
- color: #4665A2;
-}
-
-/* @end */
-
-dl.el {
- margin-left: -1cm;
-}
-
-.fragment {
- font-family: monospace, fixed;
- font-size: 105%;
-}
-
-pre.fragment {
- border: 1px solid #C4CFE5;
- background-color: #FBFCFD;
- padding: 4px 6px;
- margin: 4px 8px 4px 2px;
- overflow: auto;
- word-wrap: break-word;
- font-size: 9pt;
- line-height: 125%;
-}
-
-div.ah {
- background-color: black;
- font-weight: bold;
- color: #ffffff;
- margin-bottom: 3px;
- margin-top: 3px;
- padding: 0.2em;
- border: solid thin #333;
- border-radius: 0.5em;
- -webkit-border-radius: .5em;
- -moz-border-radius: .5em;
- -webkit-box-shadow: 2px 2px 3px #999;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
- background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
-}
-
-div.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- margin-bottom: 6px;
- font-weight: bold;
-}
-
-div.groupText {
- margin-left: 16px;
- font-style: italic;
-}
-
-body {
- background: white;
- color: black;
- margin: 0;
-}
-
-div.contents {
- margin-top: 10px;
- margin-left: 10px;
- margin-right: 10px;
-}
-
-td.indexkey {
- background-color: #EBEFF6;
- font-weight: bold;
- border: 1px solid #C4CFE5;
- margin: 2px 0px 2px 0;
- padding: 2px 10px;
-}
-
-td.indexvalue {
- background-color: #EBEFF6;
- border: 1px solid #C4CFE5;
- padding: 2px 10px;
- margin: 2px 0px;
-}
-
-tr.memlist {
- background-color: #EEF1F7;
-}
-
-p.formulaDsp {
- text-align: center;
-}
-
-img.formulaDsp {
-
-}
-
-img.formulaInl {
- vertical-align: middle;
-}
-
-div.center {
- text-align: center;
- margin-top: 0px;
- margin-bottom: 0px;
- padding: 0px;
-}
-
-div.center img {
- border: 0px;
-}
-
-address.footer {
- text-align: right;
- padding-right: 12px;
-}
-
-img.footer {
- border: 0px;
- vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
- color: #008000
-}
-
-span.keywordtype {
- color: #604020
-}
-
-span.keywordflow {
- color: #e08000
-}
-
-span.comment {
- color: #800000
-}
-
-span.preprocessor {
- color: #806020
-}
-
-span.stringliteral {
- color: #002080
-}
-
-span.charliteral {
- color: #008080
-}
-
-span.vhdldigit {
- color: #ff00ff
-}
-
-span.vhdlchar {
- color: #000000
-}
-
-span.vhdlkeyword {
- color: #700070
-}
-
-span.vhdllogic {
- color: #ff0000
-}
-
-/* @end */
-
-/*
-.search {
- color: #003399;
- font-weight: bold;
-}
-
-form.search {
- margin-bottom: 0px;
- margin-top: 0px;
-}
-
-input.search {
- font-size: 75%;
- color: #000080;
- font-weight: normal;
- background-color: #e8eef2;
-}
-*/
-
-td.tiny {
- font-size: 75%;
-}
-
-.dirtab {
- padding: 4px;
- border-collapse: collapse;
- border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
- background: #EBEFF6;
- font-weight: bold;
-}
-
-hr {
- height: 0px;
- border: none;
- border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
- height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
- border-spacing: 0px;
- padding: 0px;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
- background-color: #F9FAFC;
- border: none;
- margin: 4px;
- padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
- padding: 0px 8px 4px 8px;
- color: #555;
-}
-
-.memItemLeft, .memItemRight, .memTemplParams {
- border-top: 1px solid #C4CFE5;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memTemplParams {
- color: #4665A2;
- white-space: nowrap;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtemplate {
- font-size: 80%;
- color: #4665A2;
- font-weight: normal;
- margin-left: 3px;
-}
-
-.memnav {
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-
-.memitem {
- padding: 0;
- margin-bottom: 10px;
-}
-
-.memname {
- white-space: nowrap;
- font-weight: bold;
- margin-left: 6px;
-}
-
-.memproto {
- border-top: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 6px 0px 6px 0px;
- color: #253555;
- font-weight: bold;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- /* firefox specific markup */
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- -moz-border-radius-topright: 8px;
- -moz-border-radius-topleft: 8px;
- /* webkit specific markup */
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -webkit-border-top-right-radius: 8px;
- -webkit-border-top-left-radius: 8px;
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E2E8F2;
-
-}
-
-.memdoc {
- border-bottom: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 2px 5px;
- background-color: #FBFCFD;
- border-top-width: 0;
- /* firefox specific markup */
- -moz-border-radius-bottomleft: 8px;
- -moz-border-radius-bottomright: 8px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
- /* webkit specific markup */
- -webkit-border-bottom-left-radius: 8px;
- -webkit-border-bottom-right-radius: 8px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
-}
-
-.paramkey {
- text-align: right;
-}
-
-.paramtype {
- white-space: nowrap;
-}
-
-.paramname {
- color: #602020;
- white-space: nowrap;
-}
-.paramname em {
- font-style: normal;
-}
-
-/* @end */
-
-/* @group Directory (tree) */
-
-/* for the tree view */
-
-.ftvtree {
- font-family: sans-serif;
- margin: 0px;
-}
-
-/* these are for tree view when used as main index */
-
-.directory {
- font-size: 9pt;
- font-weight: bold;
- margin: 5px;
-}
-
-.directory h3 {
- margin: 0px;
- margin-top: 1em;
- font-size: 11pt;
-}
-
-/*
-The following two styles can be used to replace the root node title
-with an image of your choice. Simply uncomment the next two styles,
-specify the name of your image and be sure to set 'height' to the
-proper pixel height of your image.
-*/
-
-/*
-.directory h3.swap {
- height: 61px;
- background-repeat: no-repeat;
- background-image: url("yourimage.gif");
-}
-.directory h3.swap span {
- display: none;
-}
-*/
-
-.directory > h3 {
- margin-top: 0;
-}
-
-.directory p {
- margin: 0px;
- white-space: nowrap;
-}
-
-.directory div {
- display: none;
- margin: 0px;
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-/* these are for tree view when not used as main index */
-
-.directory-alt {
- font-size: 100%;
- font-weight: bold;
-}
-
-.directory-alt h3 {
- margin: 0px;
- margin-top: 1em;
- font-size: 11pt;
-}
-
-.directory-alt > h3 {
- margin-top: 0;
-}
-
-.directory-alt p {
- margin: 0px;
- white-space: nowrap;
-}
-
-.directory-alt div {
- display: none;
- margin: 0px;
-}
-
-.directory-alt img {
- vertical-align: -30%;
-}
-
-/* @end */
-
-div.dynheader {
- margin-top: 8px;
-}
-
-address {
- font-style: normal;
- color: #2A3D61;
-}
-
-table.doxtable {
- border-collapse:collapse;
-}
-
-table.doxtable td, table.doxtable th {
- border: 1px solid #2D4068;
- padding: 3px 7px 2px;
-}
-
-table.doxtable th {
- background-color: #374F7F;
- color: #FFFFFF;
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
- text-align:left;
-}
-
-.tabsearch {
- top: 0px;
- left: 10px;
- height: 36px;
- background-image: url('tab_b.png');
- z-index: 101;
- overflow: hidden;
- font-size: 13px;
-}
-
-.navpath ul
-{
- font-size: 11px;
- background-image:url('tab_b.png');
- background-repeat:repeat-x;
- height:30px;
- line-height:30px;
- color:#8AA0CC;
- border:solid 1px #C2CDE4;
- overflow:hidden;
- margin:0px;
- padding:0px;
-}
-
-.navpath li
-{
- list-style-type:none;
- float:left;
- padding-left:10px;
- padding-right: 15px;
- background-image:url('bc_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color:#364D7C;
-}
-
-.navpath a
-{
- height:32px;
- display:block;
- text-decoration: none;
- outline: none;
-}
-
-.navpath a:hover
-{
- color:#6884BD;
-}
-
-div.summary
-{
- float: right;
- font-size: 8pt;
- padding-right: 5px;
- width: 50%;
- text-align: right;
-}
-
-div.summary a
-{
- white-space: nowrap;
-}
-
-div.header
-{
- background-image:url('nav_h.png');
- background-repeat:repeat-x;
- background-color: #F9FAFC;
- margin: 0px;
- border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
- padding: 5px 5px 5px 10px;
-}
-
diff --git a/doc/doxygen/html/doxygen.png b/doc/doxygen/html/doxygen.png
deleted file mode 100644
index 635ed52..0000000
Binary files a/doc/doxygen/html/doxygen.png and /dev/null differ
diff --git a/doc/doxygen/html/enqueue_8hpp.html b/doc/doxygen/html/enqueue_8hpp.html
deleted file mode 100644
index a808a8e..0000000
--- a/doc/doxygen/html/enqueue_8hpp.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Enqueues kernels into command queues.
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="command__queue_8hpp_source.html">viennacl/ocl/command_queue.hpp</a>"</code><br/>
-
-<p><a href="enqueue_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue. <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ab0e19e66c4f09964ef88fcfdf1a5afc3">enqueue</a> (KernelType &k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function that enqueues the provided kernel into the first queue of the currently active device in the currently active context. <a href="#ab0e19e66c4f09964ef88fcfdf1a5afc3"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Enqueues kernels into command queues. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/enqueue_8hpp_source.html b/doc/doxygen/html/enqueue_8hpp_source.html
deleted file mode 100644
index 58895fe..0000000
--- a/doc/doxygen/html/enqueue_8hpp_source.html
+++ /dev/null
@@ -1,170 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/enqueue.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="enqueue_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ENQUEUE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ENQUEUE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="command__queue_8hpp.html" title="Implementations of command queue representations.">viennacl/ocl/command_queue.hpp</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>ocl
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00037"></a>00037 <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00038"></a>00038 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k, <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> <span class="keyword">const</span> & queue)
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="comment">// 1D kernel:</span>
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (k.local_work_size(1) == 0)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Starting 1D-kernel '"</span> << k.name() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00045"></a>00045 std::cout << <span class="stringliteral">"ViennaCL: Global work size: '"</span> << k.global_work_size() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00046"></a>00046 std::cout << <span class="stringliteral">"ViennaCL: Local work size: '"</span> << k.local_work_size() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00047"></a>00047 <span class="preprocessor"> #endif</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span>
-<a name="l00049"></a>00049 <span class="keywordtype">size_t</span> tmp_global = k.global_work_size();
-<a name="l00050"></a>00050 <span class="keywordtype">size_t</span> tmp_local = k.local_work_size();
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 cl_int err;
-<a name="l00053"></a>00053 <span class="keywordflow">if</span> (tmp_global == 1 && tmp_local == 1)
-<a name="l00054"></a>00054 err = clEnqueueTask(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 0, NULL, NULL);
-<a name="l00055"></a>00055 <span class="keywordflow">else</span>
-<a name="l00056"></a>00056 err = clEnqueueNDRangeKernel(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 1, NULL, &tmp_global, &tmp_local, 0, NULL, NULL);
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 <span class="keywordflow">if</span> (err != CL_SUCCESS) <span class="comment">//if not successful, try to start with smaller work size</span>
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <span class="comment">//std::cout << "FAIL: " << std::endl; exit(0);</span>
-<a name="l00061"></a>00061 <span class="keywordflow">while</span> (err != CL_SUCCESS && tmp_local > 1)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="comment">//std::cout << "Flushing queue, then enqueuing again with half the size..." << std::endl;</span>
-<a name="l00064"></a>00064 <span class="comment">//std::cout << "Error code: " << err << std::endl;</span>
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 tmp_global /= 2;
-<a name="l00067"></a>00067 tmp_local /= 2;
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Kernel start failed for '"</span> << k.name() << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00071"></a>00071 std::cout << <span class="stringliteral">"ViennaCL: Global work size: '"</span> << tmp_global << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00072"></a>00072 std::cout << <span class="stringliteral">"ViennaCL: Local work size: '"</span> << tmp_local << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00073"></a>00073 <span class="preprocessor"> #endif</span>
-<a name="l00074"></a>00074 <span class="preprocessor"></span>
-<a name="l00075"></a>00075 queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00076"></a>00076 err = clEnqueueNDRangeKernel(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 1, NULL, &tmp_global, &tmp_local, 0, NULL, NULL);
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 <span class="comment">//could not start kernel with any parameters</span>
-<a name="l00082"></a>00082 std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: Kernel start failed for '"</span> << k.name() << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00083"></a>00083 std::cerr << <span class="stringliteral">"ViennaCL: Smaller work sizes could not solve the problem. "</span> << std::endl;
-<a name="l00084"></a>00084 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00085"></a>00085 }
-<a name="l00086"></a>00086 <span class="keywordflow">else</span>
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="comment">//remember parameters:</span>
-<a name="l00089"></a>00089 k.local_work_size(0, tmp_local);
-<a name="l00090"></a>00090 k.global_work_size(0, tmp_global);
-<a name="l00091"></a>00091 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Kernel '"</span> << k.name() << <span class="stringliteral">"' now uses global work size "</span> << tmp_global << <span class="stringliteral">" and local work size "</span> << tmp_local << <span class="stringliteral">"."</span> << std::endl;
-<a name="l00093"></a>00093 <span class="preprocessor"> #endif</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span> }
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 }
-<a name="l00097"></a>00097 <span class="keywordflow">else</span> <span class="comment">//2D kernel</span>
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00100"></a>00100 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Starting 2D-kernel '"</span> << k.name() << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00101"></a>00101 std::cout << <span class="stringliteral">"ViennaCL: Global work size: '"</span> << k.global_work_size(0) << <span class="stringliteral">", "</span> << k.global_work_size(1) << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00102"></a>00102 std::cout << <span class="stringliteral">"ViennaCL: Local work size: '"</span> << k.local_work_size(0) << <span class="stringliteral">", "</span> << k.local_work_size(1) << <span class="stringliteral">"'..."</span> << std::endl;
-<a name="l00103"></a>00103 <span class="preprocessor"> #endif</span>
-<a name="l00104"></a>00104 <span class="preprocessor"></span>
-<a name="l00105"></a>00105 <span class="keywordtype">size_t</span> tmp_global[2];
-<a name="l00106"></a>00106 tmp_global[0] = k.global_work_size(0);
-<a name="l00107"></a>00107 tmp_global[1] = k.global_work_size(1);
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keywordtype">size_t</span> tmp_local[2];
-<a name="l00110"></a>00110 tmp_local[0] = k.local_work_size(0);
-<a name="l00111"></a>00111 tmp_local[1] = k.local_work_size(1);
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 cl_int err = clEnqueueNDRangeKernel(queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), k.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), 2, NULL, tmp_global, tmp_local, 0, NULL, NULL);
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="comment">//could not start kernel with any parameters</span>
-<a name="l00118"></a>00118 std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: Kernel start failed for '"</span> << k.name() << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00119"></a>00119 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00125"></a>00125 <span class="preprocessor"></span> queue.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00126"></a>00126 std::cout << <span class="stringliteral">"ViennaCL: Kernel "</span> << k.name() << <span class="stringliteral">" finished!"</span> << std::endl;
-<a name="l00127"></a>00127 <span class="preprocessor"> #endif</span>
-<a name="l00128"></a>00128 <span class="preprocessor"></span> } <span class="comment">//enqueue()</span>
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130
-<a name="l00132"></a>00132 <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00133"></a><a class="code" href="namespaceviennacl_1_1ocl.html#ab0e19e66c4f09964ef88fcfdf1a5afc3">00133</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k)
-<a name="l00134"></a>00134 {
-<a name="l00135"></a>00135 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(k, <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">get_queue</a>());
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 } <span class="comment">// namespace ocl</span>
-<a name="l00138"></a>00138 } <span class="comment">// namespace viennacl</span>
-<a name="l00139"></a>00139 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/entry__proxy_8hpp.html b/doc/doxygen/html/entry__proxy_8hpp.html
deleted file mode 100644
index 599e303..0000000
--- a/doc/doxygen/html/entry__proxy_8hpp.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>A proxy class for entries in a vector.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-
-<p><a href="entry__proxy_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library. <a href="classviennacl_1_1entry__proxy.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A proxy class for entries in a vector. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/entry__proxy_8hpp_source.html b/doc/doxygen/html/entry__proxy_8hpp_source.html
deleted file mode 100644
index 5b33d4e..0000000
--- a/doc/doxygen/html/entry__proxy_8hpp_source.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/entry_proxy.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="entry__proxy_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00019"></a>00019 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_ENTRY_PROXY_HPP_</span>
-<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_ENTRY_PROXY_HPP_</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="comment">//proxy class for single vector entries (this is a slow operation!!)</span>
-<a name="l00036"></a>00036 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00037"></a><a class="code" href="classviennacl_1_1entry__proxy.html">00037</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a>
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">public</span>:
-<a name="l00045"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">00045</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81" title="The constructor for the proxy class. Declared explicit to avoid any surprises created by the compiler...">entry_proxy</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mem_offset,
-<a name="l00046"></a>00046 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & mem_handle)
-<a name="l00047"></a>00047 : _index(mem_offset), _mem_handle(mem_handle) {};
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="comment">//operators:</span>
-<a name="l00053"></a><a class="code" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">00053</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1" title="Inplace addition of a CPU floating point value.">operator+=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 SCALARTYPE temp = read();
-<a name="l00056"></a>00056 temp += value;
-<a name="l00057"></a>00057 write(temp);
-<a name="l00058"></a>00058 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00059"></a>00059 }
-<a name="l00060"></a>00060
-<a name="l00063"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">00063</a> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b" title="Inplace subtraction of a CPU floating point value.">operator-=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 SCALARTYPE temp = read();
-<a name="l00066"></a>00066 temp -= value;
-<a name="l00067"></a>00067 write(temp);
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00073"></a><a class="code" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">00073</a> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5" title="Inplace multiplication with a CPU floating point value.">operator*=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 SCALARTYPE temp = read();
-<a name="l00076"></a>00076 temp *= value;
-<a name="l00077"></a>00077 write(temp);
-<a name="l00078"></a>00078 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080
-<a name="l00083"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">00083</a> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c" title="Inplace division by a CPU floating point value.">operator/=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 SCALARTYPE temp = read();
-<a name="l00086"></a>00086 temp /= value;
-<a name="l00087"></a>00087 write(temp);
-<a name="l00088"></a>00088 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00093"></a><a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852">00093</a> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852" title="Assignment of a CPU floating point value.">operator=</a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00094"></a>00094 {
-<a name="l00095"></a>00095 write(value);
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098
-<a name="l00101"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">00101</a> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852" title="Assignment of a CPU floating point value.">operator=</a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), value.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), _mem_handle, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*_index, <span class="keyword">sizeof</span>(SCALARTYPE), 0, NULL, NULL);
-<a name="l00104"></a>00104 <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00105"></a>00105 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00111"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">00111</a> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> & <a class="code" href="classviennacl_1_1entry__proxy.html#aac69195b98b89d2dbb4cb339e3d00852" title="Assignment of a CPU floating point value.">operator=</a>(<a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a> <span class="keyword">const</span> & other)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(),
-<a name="l00114"></a>00114 other._mem_handle, <span class="comment">//src</span>
-<a name="l00115"></a>00115 _mem_handle, <span class="comment">//dest</span>
-<a name="l00116"></a>00116 <span class="keyword">sizeof</span>(SCALARTYPE) * other._index, <span class="comment">//offset src</span>
-<a name="l00117"></a>00117 <span class="keyword">sizeof</span>(SCALARTYPE) * _index, <span class="comment">//offset dest</span>
-<a name="l00118"></a>00118 <span class="keyword">sizeof</span>(SCALARTYPE), 0, NULL, NULL);
-<a name="l00119"></a>00119 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00120"></a>00120 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00121"></a>00121 }
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="comment">//type conversion:</span>
-<a name="l00124"></a>00124 <span class="comment">// allows to write something like:</span>
-<a name="l00125"></a>00125 <span class="comment">// double test = vector(4);</span>
-<a name="l00132"></a><a class="code" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">00132</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d" title="Conversion to a CPU floating point value.">operator SCALARTYPE </a>()<span class="keyword"> const</span>
-<a name="l00133"></a>00133 <span class="keyword"> </span>{
-<a name="l00134"></a>00134 SCALARTYPE temp = read();
-<a name="l00135"></a>00135 <span class="keywordflow">return</span> temp;
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00140"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">00140</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f" title="Returns the index of the represented element.">index</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _index; }
-<a name="l00141"></a>00141
-<a name="l00144"></a><a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">00144</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mem_handle; }
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 <span class="keyword">private</span>:
-<a name="l00149"></a>00149 SCALARTYPE read()<span class="keyword"> const</span>
-<a name="l00150"></a>00150 <span class="keyword"> </span>{
-<a name="l00151"></a>00151 SCALARTYPE temp;
-<a name="l00152"></a>00152 cl_int err;
-<a name="l00153"></a>00153 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), _mem_handle, CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*_index, <span class="keyword">sizeof</span>(SCALARTYPE), &temp, 0, NULL, NULL);
-<a name="l00154"></a>00154 <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00155"></a>00155 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00156"></a>00156 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00157"></a>00157 <span class="keywordflow">return</span> temp;
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159
-<a name="l00162"></a>00162 <span class="keywordtype">void</span> write(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)
-<a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 cl_int err;
-<a name="l00165"></a>00165 err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), _mem_handle, CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*_index, <span class="keyword">sizeof</span>(SCALARTYPE), &value, 0, NULL, NULL);
-<a name="l00166"></a>00166 <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00167"></a>00167 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _index;
-<a name="l00171"></a>00171 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & _mem_handle;
-<a name="l00172"></a>00172 }; <span class="comment">//entry_proxy</span>
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175
-<a name="l00176"></a>00176 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/error_8hpp.html b/doc/doxygen/html/error_8hpp.html
deleted file mode 100644
index 1daa32b..0000000
--- a/doc/doxygen/html/error_8hpp.html
+++ /dev/null
@@ -1,152 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#define-members">Defines</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Error handling for the OpenCL layer of ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <string></code><br/>
-<code>#include <iostream></code><br/>
-<code>#include <exception></code><br/>
-
-<p><a href="error_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An error reporting class. Template argument is used to avoid problems with external linkage. <a href="structviennacl_1_1ocl_1_1error__checker.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">VIENNACL_BUG_REPORT_STRING</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err) <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">viennacl::ocl::error_checker</a><void>::checkError(err, __FILE__, __FUNCTION__, __LINE__);</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Error handling for the OpenCL layer of ViennaCL. </p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a6d42757cdf0e944ebe5236aa4f96b6aa"></a><!-- doxytag: member="error.hpp::VIENNACL_BUG_REPORT_STRING" ref="a6d42757cdf0e944ebe5236aa4f96b6aa" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define VIENNACL_BUG_REPORT_STRING</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<b>Value:</b><div class="fragment"><pre class="fragment"><span class="stringliteral">"\nIf you think that this is a bug in ViennaCL, please report it at viennacl-support at lists.sourceforge.net and supply at least the following information:\n"</span>\
- <span class="stringliteral">" * Operating System\n"</span>\
- <span class="stringliteral">" * Which OpenCL implementation (AMD, NVIDIA, etc.)\n"</span>\
- <span class="stringliteral">" * ViennaCL version\n"</span>\
- <span class="stringliteral">"Many thanks in advance!"</span>;\
-</pre></div>
-</div>
-</div>
-<a class="anchor" id="a44f070f54255e72eb40c75ebd72ea602"></a><!-- doxytag: member="error.hpp::VIENNACL_ERR_CHECK" ref="a44f070f54255e72eb40c75ebd72ea602" args="(err)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define VIENNACL_ERR_CHECK</td>
- <td>(</td>
- <td class="paramtype"> </td>
- <td class="paramname">err</td>
- <td> ) </td>
- <td> <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">viennacl::ocl::error_checker</a><void>::checkError(err, __FILE__, __FUNCTION__, __LINE__);</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/error_8hpp_source.html b/doc/doxygen/html/error_8hpp_source.html
deleted file mode 100644
index 4e1b253..0000000
--- a/doc/doxygen/html/error_8hpp_source.html
+++ /dev/null
@@ -1,620 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/error.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="error_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ERROR_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ERROR_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="comment">//error levels:</span>
-<a name="l00023"></a>00023 <span class="comment">//#define VIENNACL_DEBUG_ALL //print all of the following</span>
-<a name="l00024"></a>00024 <span class="comment">//#define VIENNACL_DEBUG_KERNEL //debug any modifications on viennacl::ocl::kernel objects</span>
-<a name="l00025"></a>00025 <span class="comment">//#define VIENNACL_DEBUG_COPY //print infos related to setting up/modifying memory objects</span>
-<a name="l00026"></a>00026 <span class="comment">//#define VIENNACL_DEBUG_OPENCL //display debug info for the OpenCL layer (platform/context/queue creation,</span>
-<a name="l00027"></a>00027 <span class="comment">//#define VIENNACL_DEBUG_DEVICE //Show device info upon allocation</span>
-<a name="l00028"></a>00028 <span class="comment">//#define VIENNACL_DEBUG_CONTEXT //Debug queries to context</span>
-<a name="l00029"></a>00029 <span class="comment">//#define VIENNACL_DEBUG_BUILD //Show debug info from OpenCL compiler</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="comment">//backwards compatibility:</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor"> #define VIENNACL_DEBUG_ALL</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00040"></a>00040 <span class="preprocessor">#else</span>
-<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
-<a name="l00043"></a>00043 <span class="preprocessor"></span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include <string></span>
-<a name="l00045"></a>00045 <span class="preprocessor">#include <iostream></span>
-<a name="l00046"></a>00046 <span class="preprocessor">#include <exception></span>
-<a name="l00047"></a>00047
-<a name="l00048"></a><a class="code" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">00048</a> <span class="preprocessor">#define VIENNACL_BUG_REPORT_STRING \</span>
-<a name="l00049"></a>00049 <span class="preprocessor"> "\nIf you think that this is a bug in ViennaCL, please report it at viennacl-support at lists.sourceforge.net and supply at least the following information:\n"\</span>
-<a name="l00050"></a>00050 <span class="preprocessor"> " * Operating System\n"\</span>
-<a name="l00051"></a>00051 <span class="preprocessor"> " * Which OpenCL implementation (AMD, NVIDIA, etc.)\n"\</span>
-<a name="l00052"></a>00052 <span class="preprocessor"> " * ViennaCL version\n"\</span>
-<a name="l00053"></a>00053 <span class="preprocessor"> "Many thanks in advance!";\</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="keyword">namespace </span>viennacl
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 <span class="keyword">namespace </span>ocl
-<a name="l00058"></a>00058 {
-<a name="l00059"></a>00059 <span class="comment">//Wrapper for OpenCL exceptions:</span>
-<a name="l00060"></a><a class="code" href="classviennacl_1_1ocl_1_1device__not__found.html">00060</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a> : <span class="keyword">public</span> std::exception
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_DEVICE_NOT_FOUND \n ViennaCL could not find a suitable device. Please check whether an OpenCL implementation is properly installed and a suitable device available."</span>
-<a name="l00065"></a>00065 VIENNACL_BUG_REPORT_STRING;
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067 };
-<a name="l00068"></a>00068
-<a name="l00069"></a><a class="code" href="classviennacl_1_1ocl_1_1device__not__available.html">00069</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a> : <span class="keyword">public</span> std::exception
-<a name="l00070"></a>00070 {
-<a name="l00071"></a>00071 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_DEVICE_NOT_AVAILABLE \n ViennaCL could not use the compute device because it is not available."</span>
-<a name="l00074"></a>00074 VIENNACL_BUG_REPORT_STRING;
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076 };
-<a name="l00077"></a>00077
-<a name="l00078"></a><a class="code" href="classviennacl_1_1ocl_1_1compiler__not__available.html">00078</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a> : <span class="keyword">public</span> std::exception
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_COMPILER_NOT_AVAILABLE \n Your OpenCL framework does not provide an OpenCL compiler. Unfortunately, ViennaCL cannot be used without such a compiler."</span>
-<a name="l00083"></a>00083 VIENNACL_BUG_REPORT_STRING;
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 };
-<a name="l00086"></a>00086
-<a name="l00087"></a><a class="code" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">00087</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a> : <span class="keyword">public</span> std::exception
-<a name="l00088"></a>00088 {
-<a name="l00089"></a>00089 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_MEM_OBJECT_ALLOCATION_FAILURE \n ViennaCL could not allocate memory on the device. Most likely the device simply ran out of memory."</span>
-<a name="l00092"></a>00092 VIENNACL_BUG_REPORT_STRING;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 };
-<a name="l00095"></a>00095
-<a name="l00096"></a><a class="code" href="classviennacl_1_1ocl_1_1out__of__resources.html">00096</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a> : <span class="keyword">public</span> std::exception
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00099"></a>00099 {
-<a name="l00100"></a>00100 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_OUT_OF_RESOURCES \n ViennaCL tried to launch a compute kernel, but the device does not provide enough resources. Try changing the global and local work item sizes."</span>
-<a name="l00101"></a>00101 VIENNACL_BUG_REPORT_STRING;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 };
-<a name="l00104"></a>00104
-<a name="l00105"></a><a class="code" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">00105</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a> : <span class="keyword">public</span> std::exception
-<a name="l00106"></a>00106 {
-<a name="l00107"></a>00107 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_OUT_OF_HOST_MEMORY \n The host ran out of memory (usually CPU RAM). Please try again on smaller problems."</span>
-<a name="l00110"></a>00110 VIENNACL_BUG_REPORT_STRING;
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112 };
-<a name="l00113"></a>00113
-<a name="l00114"></a><a class="code" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">00114</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a> : <span class="keyword">public</span> std::exception
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00117"></a>00117 {
-<a name="l00118"></a>00118 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_PROFILING_INFO_NOT_AVAILABLE."</span>
-<a name="l00119"></a>00119 VIENNACL_BUG_REPORT_STRING;
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121 };
-<a name="l00122"></a>00122
-<a name="l00123"></a><a class="code" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">00123</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a> : <span class="keyword">public</span> std::exception
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_MEM_COPY_OVERLAP."</span>
-<a name="l00128"></a>00128 VIENNACL_BUG_REPORT_STRING;
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130 };
-<a name="l00131"></a>00131
-<a name="l00132"></a><a class="code" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">00132</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a> : <span class="keyword">public</span> std::exception
-<a name="l00133"></a>00133 {
-<a name="l00134"></a>00134 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00135"></a>00135 {
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_IMAGE_FORMAT_MISMATCH."</span>
-<a name="l00137"></a>00137 VIENNACL_BUG_REPORT_STRING;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139 };
-<a name="l00140"></a>00140
-<a name="l00141"></a><a class="code" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">00141</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a> : <span class="keyword">public</span> std::exception
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_IMAGE_FORMAT_NOT_SUPPORTED."</span>
-<a name="l00146"></a>00146 VIENNACL_BUG_REPORT_STRING;
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148 };
-<a name="l00149"></a>00149
-<a name="l00150"></a><a class="code" href="classviennacl_1_1ocl_1_1build__program__failure.html">00150</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a> : <span class="keyword">public</span> std::exception
-<a name="l00151"></a>00151 {
-<a name="l00152"></a>00152 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_BUILD_PROGRAM_FAILURE \n The OpenCL compiler encountered an error during the compilation of ViennaCL sources. This is most likely a bug in ViennaCL."</span>
-<a name="l00155"></a>00155 VIENNACL_BUG_REPORT_STRING;
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 };
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="classviennacl_1_1ocl_1_1map__failure.html">00159</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a> : <span class="keyword">public</span> std::exception
-<a name="l00160"></a>00160 {
-<a name="l00161"></a>00161 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00162"></a>00162 {
-<a name="l00163"></a>00163 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_MAP_FAILURE."</span>
-<a name="l00164"></a>00164 VIENNACL_BUG_REPORT_STRING;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166 };
-<a name="l00167"></a>00167
-<a name="l00168"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__value.html">00168</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a> : <span class="keyword">public</span> std::exception
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_VALUE."</span>
-<a name="l00173"></a>00173 VIENNACL_BUG_REPORT_STRING;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175 };
-<a name="l00176"></a>00176
-<a name="l00177"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__device__type.html">00177</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a> : <span class="keyword">public</span> std::exception
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_DEVICE_TYPE."</span>
-<a name="l00182"></a>00182 VIENNACL_BUG_REPORT_STRING;
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 };
-<a name="l00185"></a>00185
-<a name="l00186"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__platform.html">00186</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a> : <span class="keyword">public</span> std::exception
-<a name="l00187"></a>00187 {
-<a name="l00188"></a>00188 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PLATFORM."</span>
-<a name="l00191"></a>00191 VIENNACL_BUG_REPORT_STRING;
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 };
-<a name="l00194"></a>00194
-<a name="l00195"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__device.html">00195</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a> : <span class="keyword">public</span> std::exception
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00198"></a>00198 {
-<a name="l00199"></a>00199 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_DEVICE."</span>
-<a name="l00200"></a>00200 VIENNACL_BUG_REPORT_STRING;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202 };
-<a name="l00203"></a>00203
-<a name="l00204"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__context.html">00204</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a> : <span class="keyword">public</span> std::exception
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_CONTEXT."</span>
-<a name="l00209"></a>00209 VIENNACL_BUG_REPORT_STRING;
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211 };
-<a name="l00212"></a>00212
-<a name="l00213"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">00213</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a> : <span class="keyword">public</span> std::exception
-<a name="l00214"></a>00214 {
-<a name="l00215"></a>00215 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00216"></a>00216 {
-<a name="l00217"></a>00217 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_QUEUE_PROPERTIES."</span>
-<a name="l00218"></a>00218 VIENNACL_BUG_REPORT_STRING;
-<a name="l00219"></a>00219 }
-<a name="l00220"></a>00220 };
-<a name="l00221"></a>00221
-<a name="l00222"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">00222</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a> : <span class="keyword">public</span> std::exception
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_COMMAND_QUEUE."</span>
-<a name="l00227"></a>00227 VIENNACL_BUG_REPORT_STRING;
-<a name="l00228"></a>00228 }
-<a name="l00229"></a>00229 };
-<a name="l00230"></a>00230
-<a name="l00231"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">00231</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a> : <span class="keyword">public</span> std::exception
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00234"></a>00234 {
-<a name="l00235"></a>00235 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_HOST_PTR."</span>
-<a name="l00236"></a>00236 VIENNACL_BUG_REPORT_STRING;
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238 };
-<a name="l00239"></a>00239
-<a name="l00240"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">00240</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a> : <span class="keyword">public</span> std::exception
-<a name="l00241"></a>00241 {
-<a name="l00242"></a>00242 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_MEM_OBJECT."</span>
-<a name="l00245"></a>00245 VIENNACL_BUG_REPORT_STRING;
-<a name="l00246"></a>00246 }
-<a name="l00247"></a>00247 };
-<a name="l00248"></a>00248
-<a name="l00249"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">00249</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a> : <span class="keyword">public</span> std::exception
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00252"></a>00252 {
-<a name="l00253"></a>00253 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR."</span>
-<a name="l00254"></a>00254 VIENNACL_BUG_REPORT_STRING;
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256 };
-<a name="l00257"></a>00257
-<a name="l00258"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__size.html">00258</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00261"></a>00261 {
-<a name="l00262"></a>00262 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_IMAGE_SIZE."</span>
-<a name="l00263"></a>00263 VIENNACL_BUG_REPORT_STRING;
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265 };
-<a name="l00266"></a>00266
-<a name="l00267"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__sampler.html">00267</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a> : <span class="keyword">public</span> std::exception
-<a name="l00268"></a>00268 {
-<a name="l00269"></a>00269 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00270"></a>00270 {
-<a name="l00271"></a>00271 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_SAMPLER."</span>
-<a name="l00272"></a>00272 VIENNACL_BUG_REPORT_STRING;
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 };
-<a name="l00275"></a>00275
-<a name="l00276"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__binary.html">00276</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a> : <span class="keyword">public</span> std::exception
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00279"></a>00279 {
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_BINARY."</span>
-<a name="l00281"></a>00281 VIENNACL_BUG_REPORT_STRING;
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283 };
-<a name="l00284"></a>00284
-<a name="l00285"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__build__options.html">00285</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a> : <span class="keyword">public</span> std::exception
-<a name="l00286"></a>00286 {
-<a name="l00287"></a>00287 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00288"></a>00288 {
-<a name="l00289"></a>00289 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_BUILD_OPTIONS."</span>
-<a name="l00290"></a>00290 VIENNACL_BUG_REPORT_STRING;
-<a name="l00291"></a>00291 }
-<a name="l00292"></a>00292 };
-<a name="l00293"></a>00293
-<a name="l00294"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__program.html">00294</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a> : <span class="keyword">public</span> std::exception
-<a name="l00295"></a>00295 {
-<a name="l00296"></a>00296 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00297"></a>00297 {
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PROGRAM."</span>
-<a name="l00299"></a>00299 VIENNACL_BUG_REPORT_STRING;
-<a name="l00300"></a>00300 }
-<a name="l00301"></a>00301 };
-<a name="l00302"></a>00302
-<a name="l00303"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">00303</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a> : <span class="keyword">public</span> std::exception
-<a name="l00304"></a>00304 {
-<a name="l00305"></a>00305 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PROGRAM_EXECUTABLE."</span>
-<a name="l00308"></a>00308 VIENNACL_BUG_REPORT_STRING;
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310 };
-<a name="l00311"></a>00311
-<a name="l00312"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">00312</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a> : <span class="keyword">public</span> std::exception
-<a name="l00313"></a>00313 {
-<a name="l00314"></a>00314 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00315"></a>00315 {
-<a name="l00316"></a>00316 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL_NAME \n The supplied kernel name is invalid. If you have written your own OpenCL kernel, please check that the correct kernel name is used in the initalization of the kernel object."</span>
-<a name="l00317"></a>00317 VIENNACL_BUG_REPORT_STRING;
-<a name="l00318"></a>00318 }
-<a name="l00319"></a>00319 };
-<a name="l00320"></a>00320
-<a name="l00321"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">00321</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a> : <span class="keyword">public</span> std::exception
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00324"></a>00324 {
-<a name="l00325"></a>00325 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL_DEFINITION."</span>
-<a name="l00326"></a>00326 VIENNACL_BUG_REPORT_STRING;
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328 };
-<a name="l00329"></a>00329
-<a name="l00330"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel.html">00330</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a> : <span class="keyword">public</span> std::exception
-<a name="l00331"></a>00331 {
-<a name="l00332"></a>00332 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00333"></a>00333 {
-<a name="l00334"></a>00334 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL \n The supplied kernel argument is invalid."</span>
-<a name="l00335"></a>00335 VIENNACL_BUG_REPORT_STRING;
-<a name="l00336"></a>00336 }
-<a name="l00337"></a>00337 };
-<a name="l00338"></a>00338
-<a name="l00339"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">00339</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a> : <span class="keyword">public</span> std::exception
-<a name="l00340"></a>00340 {
-<a name="l00341"></a>00341 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00342"></a>00342 {
-<a name="l00343"></a>00343 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_ARG_INDEX."</span>
-<a name="l00344"></a>00344 VIENNACL_BUG_REPORT_STRING;
-<a name="l00345"></a>00345 }
-<a name="l00346"></a>00346 };
-<a name="l00347"></a>00347
-<a name="l00348"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">00348</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a> : <span class="keyword">public</span> std::exception
-<a name="l00349"></a>00349 {
-<a name="l00350"></a>00350 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00351"></a>00351 {
-<a name="l00352"></a>00352 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_ARG_VALUE."</span>
-<a name="l00353"></a>00353 VIENNACL_BUG_REPORT_STRING;
-<a name="l00354"></a>00354 }
-<a name="l00355"></a>00355 };
-<a name="l00356"></a>00356
-<a name="l00357"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">00357</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00358"></a>00358 {
-<a name="l00359"></a>00359 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_ARG_SIZE."</span>
-<a name="l00362"></a>00362 VIENNACL_BUG_REPORT_STRING;
-<a name="l00363"></a>00363 }
-<a name="l00364"></a>00364 };
-<a name="l00365"></a>00365
-<a name="l00366"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">00366</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a> : <span class="keyword">public</span> std::exception
-<a name="l00367"></a>00367 {
-<a name="l00368"></a>00368 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00369"></a>00369 {
-<a name="l00370"></a>00370 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_KERNEL_ARGS \n The supplied kernel arguments do not fit the kernel parameter list. If you have written your own OpenCL kernel, please check that the correct kernel arguments are set in the appropriate order."</span>
-<a name="l00371"></a>00371 VIENNACL_BUG_REPORT_STRING;
-<a name="l00372"></a>00372 }
-<a name="l00373"></a>00373 };
-<a name="l00374"></a>00374
-<a name="l00375"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">00375</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a> : <span class="keyword">public</span> std::exception
-<a name="l00376"></a>00376 {
-<a name="l00377"></a>00377 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00378"></a>00378 {
-<a name="l00379"></a>00379 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_WORK_DIMENSION"</span>
-<a name="l00380"></a>00380 VIENNACL_BUG_REPORT_STRING;
-<a name="l00381"></a>00381 }
-<a name="l00382"></a>00382 };
-<a name="l00383"></a>00383
-<a name="l00384"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">00384</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00385"></a>00385 {
-<a name="l00386"></a>00386 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_WORK_GROUP_SIZE \n The supplied work group size is invalid. If you have set this value manually, please reconsider your choice."</span>
-<a name="l00389"></a>00389 VIENNACL_BUG_REPORT_STRING;
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391 };
-<a name="l00392"></a>00392
-<a name="l00393"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">00393</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00394"></a>00394 {
-<a name="l00395"></a>00395 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00396"></a>00396 {
-<a name="l00397"></a>00397 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_WORK_ITEM_SIZE \n The work item size is invalid. If you have set this value manually, please reconsider your choice."</span>
-<a name="l00398"></a>00398 VIENNACL_BUG_REPORT_STRING;
-<a name="l00399"></a>00399 }
-<a name="l00400"></a>00400 };
-<a name="l00401"></a>00401
-<a name="l00402"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">00402</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a> : <span class="keyword">public</span> std::exception
-<a name="l00403"></a>00403 {
-<a name="l00404"></a>00404 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00405"></a>00405 {
-<a name="l00406"></a>00406 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_GLOBAL_OFFSET."</span>
-<a name="l00407"></a>00407 VIENNACL_BUG_REPORT_STRING;
-<a name="l00408"></a>00408 }
-<a name="l00409"></a>00409 };
-<a name="l00410"></a>00410
-<a name="l00411"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">00411</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a> : <span class="keyword">public</span> std::exception
-<a name="l00412"></a>00412 {
-<a name="l00413"></a>00413 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00414"></a>00414 {
-<a name="l00415"></a>00415 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_EVENT_WAIT_LIST."</span>
-<a name="l00416"></a>00416 VIENNACL_BUG_REPORT_STRING;
-<a name="l00417"></a>00417 }
-<a name="l00418"></a>00418 };
-<a name="l00419"></a>00419
-<a name="l00420"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__event.html">00420</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a> : <span class="keyword">public</span> std::exception
-<a name="l00421"></a>00421 {
-<a name="l00422"></a>00422 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00423"></a>00423 {
-<a name="l00424"></a>00424 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_EVENT."</span>
-<a name="l00425"></a>00425 VIENNACL_BUG_REPORT_STRING;
-<a name="l00426"></a>00426 }
-<a name="l00427"></a>00427 };
-<a name="l00428"></a>00428
-<a name="l00429"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__operation.html">00429</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a> : <span class="keyword">public</span> std::exception
-<a name="l00430"></a>00430 {
-<a name="l00431"></a>00431 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00432"></a>00432 {
-<a name="l00433"></a>00433 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_OPERATION."</span>
-<a name="l00434"></a>00434 VIENNACL_BUG_REPORT_STRING;
-<a name="l00435"></a>00435 }
-<a name="l00436"></a>00436 };
-<a name="l00437"></a>00437
-<a name="l00438"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">00438</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a> : <span class="keyword">public</span> std::exception
-<a name="l00439"></a>00439 {
-<a name="l00440"></a>00440 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00441"></a>00441 {
-<a name="l00442"></a>00442 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_GL_OBJECT."</span>
-<a name="l00443"></a>00443 VIENNACL_BUG_REPORT_STRING;
-<a name="l00444"></a>00444 }
-<a name="l00445"></a>00445 };
-<a name="l00446"></a>00446
-<a name="l00447"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">00447</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00448"></a>00448 {
-<a name="l00449"></a>00449 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00450"></a>00450 {
-<a name="l00451"></a>00451 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_BUFFER_SIZE."</span>
-<a name="l00452"></a>00452 VIENNACL_BUG_REPORT_STRING;
-<a name="l00453"></a>00453 }
-<a name="l00454"></a>00454 };
-<a name="l00455"></a>00455
-<a name="l00456"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">00456</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a> : <span class="keyword">public</span> std::exception
-<a name="l00457"></a>00457 {
-<a name="l00458"></a>00458 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00459"></a>00459 {
-<a name="l00460"></a>00460 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_MIP_LEVEL."</span>
-<a name="l00461"></a>00461 VIENNACL_BUG_REPORT_STRING;
-<a name="l00462"></a>00462 }
-<a name="l00463"></a>00463 };
-<a name="l00464"></a>00464
-<a name="l00465"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">00465</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a> : <span class="keyword">public</span> std::exception
-<a name="l00466"></a>00466 {
-<a name="l00467"></a>00467 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00468"></a>00468 {
-<a name="l00469"></a>00469 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_GLOBAL_WORK_SIZE."</span>
-<a name="l00470"></a>00470 VIENNACL_BUG_REPORT_STRING;
-<a name="l00471"></a>00471 }
-<a name="l00472"></a>00472 };
-<a name="l00473"></a>00473
-<a name="l00474"></a><a class="code" href="classviennacl_1_1ocl_1_1invalid__property.html">00474</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a> : <span class="keyword">public</span> std::exception
-<a name="l00475"></a>00475 {
-<a name="l00476"></a>00476 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00477"></a>00477 {
-<a name="l00478"></a>00478 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: CL_INVALID_PROPERTY."</span>
-<a name="l00479"></a>00479 VIENNACL_BUG_REPORT_STRING;
-<a name="l00480"></a>00480 }
-<a name="l00481"></a>00481 };
-<a name="l00482"></a>00482
-<a name="l00483"></a><a class="code" href="classviennacl_1_1ocl_1_1unknown__error.html">00483</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a> : <span class="keyword">public</span> std::exception
-<a name="l00484"></a>00484 {
-<a name="l00485"></a>00485 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00486"></a>00486 {
-<a name="l00487"></a>00487 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: ViennaCL encountered an unknown OpenCL error. In some cases, this might be due to an invalid global work size, but it can also be due to several compilation errors."</span>
-<a name="l00488"></a>00488 VIENNACL_BUG_REPORT_STRING;
-<a name="l00489"></a>00489 }
-<a name="l00490"></a>00490 };
-<a name="l00491"></a>00491
-<a name="l00492"></a>00492
-<a name="l00493"></a><a class="code" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">00493</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> : <span class="keyword">public</span> std::exception
-<a name="l00494"></a>00494 {
-<a name="l00495"></a>00495 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00496"></a>00496 {
-<a name="l00497"></a>00497 <span class="keywordflow">return</span> <span class="stringliteral">"ViennaCL: FATAL ERROR: You requested to create a ViennaCL type using double precision. However, double precision is not supported by your device."</span>
-<a name="l00498"></a>00498 VIENNACL_BUG_REPORT_STRING;
-<a name="l00499"></a>00499 }
-<a name="l00500"></a>00500 };
-<a name="l00501"></a>00501
-<a name="l00502"></a>00502
-<a name="l00508"></a>00508 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00509"></a><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html">00509</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html" title="An error reporting class. Template argument is used to avoid problems with external linkage...">error_checker</a>
-<a name="l00510"></a>00510 {
-<a name="l00511"></a>00511
-<a name="l00513"></a><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">00513</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334" title="Trows exceptions that reflect OpenCL error codes.">raise_exception</a>(cl_int err)
-<a name="l00514"></a>00514 {
-<a name="l00515"></a>00515 <span class="keywordflow">switch</span> (err)
-<a name="l00516"></a>00516 {
-<a name="l00517"></a>00517 <span class="keywordflow">case</span> CL_DEVICE_NOT_FOUND: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a>(); <span class="keywordflow">break</span>;
-<a name="l00518"></a>00518 <span class="keywordflow">case</span> CL_DEVICE_NOT_AVAILABLE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a>(); <span class="keywordflow">break</span>;
-<a name="l00519"></a>00519 <span class="keywordflow">case</span> CL_COMPILER_NOT_AVAILABLE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a>(); <span class="keywordflow">break</span>;
-<a name="l00520"></a>00520 <span class="keywordflow">case</span> CL_MEM_OBJECT_ALLOCATION_FAILURE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a>(); <span class="keywordflow">break</span>;
-<a name="l00521"></a>00521 <span class="keywordflow">case</span> CL_OUT_OF_RESOURCES: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a>(); <span class="keywordflow">break</span>;
-<a name="l00522"></a>00522 <span class="keywordflow">case</span> CL_OUT_OF_HOST_MEMORY: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a>(); <span class="keywordflow">break</span>;
-<a name="l00523"></a>00523 <span class="keywordflow">case</span> CL_PROFILING_INFO_NOT_AVAILABLE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a>(); <span class="keywordflow">break</span>;
-<a name="l00524"></a>00524 <span class="keywordflow">case</span> CL_MEM_COPY_OVERLAP: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a>(); <span class="keywordflow">break</span>;
-<a name="l00525"></a>00525 <span class="keywordflow">case</span> CL_IMAGE_FORMAT_MISMATCH: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a>(); <span class="keywordflow">break</span>;
-<a name="l00526"></a>00526 <span class="keywordflow">case</span> CL_IMAGE_FORMAT_NOT_SUPPORTED: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a>(); <span class="keywordflow">break</span>;
-<a name="l00527"></a>00527 <span class="keywordflow">case</span> CL_BUILD_PROGRAM_FAILURE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a>(); <span class="keywordflow">break</span>;
-<a name="l00528"></a>00528 <span class="keywordflow">case</span> CL_MAP_FAILURE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a>(); <span class="keywordflow">break</span>;
-<a name="l00529"></a>00529
-<a name="l00530"></a>00530 <span class="keywordflow">case</span> CL_INVALID_VALUE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a>(); <span class="keywordflow">break</span>;
-<a name="l00531"></a>00531 <span class="keywordflow">case</span> CL_INVALID_DEVICE_TYPE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a>(); <span class="keywordflow">break</span>;
-<a name="l00532"></a>00532 <span class="keywordflow">case</span> CL_INVALID_PLATFORM: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a>(); <span class="keywordflow">break</span>;
-<a name="l00533"></a>00533 <span class="keywordflow">case</span> CL_INVALID_DEVICE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a>(); <span class="keywordflow">break</span>;
-<a name="l00534"></a>00534 <span class="keywordflow">case</span> CL_INVALID_CONTEXT: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a>(); <span class="keywordflow">break</span>;
-<a name="l00535"></a>00535 <span class="keywordflow">case</span> CL_INVALID_QUEUE_PROPERTIES: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a>(); <span class="keywordflow">break</span>;
-<a name="l00536"></a>00536 <span class="keywordflow">case</span> CL_INVALID_COMMAND_QUEUE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a>(); <span class="keywordflow">break</span>;
-<a name="l00537"></a>00537 <span class="keywordflow">case</span> CL_INVALID_HOST_PTR: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a>(); <span class="keywordflow">break</span>;
-<a name="l00538"></a>00538 <span class="keywordflow">case</span> CL_INVALID_MEM_OBJECT: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a>(); <span class="keywordflow">break</span>;
-<a name="l00539"></a>00539 <span class="keywordflow">case</span> CL_INVALID_IMAGE_FORMAT_DESCRIPTOR: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a>(); <span class="keywordflow">break</span>;
-<a name="l00540"></a>00540 <span class="keywordflow">case</span> CL_INVALID_IMAGE_SIZE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00541"></a>00541 <span class="keywordflow">case</span> CL_INVALID_SAMPLER: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a>(); <span class="keywordflow">break</span>;
-<a name="l00542"></a>00542 <span class="keywordflow">case</span> CL_INVALID_BINARY: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a>(); <span class="keywordflow">break</span>;
-<a name="l00543"></a>00543 <span class="keywordflow">case</span> CL_INVALID_BUILD_OPTIONS: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a>(); <span class="keywordflow">break</span>;
-<a name="l00544"></a>00544 <span class="keywordflow">case</span> CL_INVALID_PROGRAM: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a>(); <span class="keywordflow">break</span>;
-<a name="l00545"></a>00545 <span class="keywordflow">case</span> CL_INVALID_PROGRAM_EXECUTABLE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a>(); <span class="keywordflow">break</span>;
-<a name="l00546"></a>00546 <span class="keywordflow">case</span> CL_INVALID_KERNEL_NAME: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a>(); <span class="keywordflow">break</span>;
-<a name="l00547"></a>00547 <span class="keywordflow">case</span> CL_INVALID_KERNEL_DEFINITION: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a>(); <span class="keywordflow">break</span>;
-<a name="l00548"></a>00548 <span class="keywordflow">case</span> CL_INVALID_KERNEL: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a>(); <span class="keywordflow">break</span>;
-<a name="l00549"></a>00549 <span class="keywordflow">case</span> CL_INVALID_ARG_INDEX: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a>(); <span class="keywordflow">break</span>;
-<a name="l00550"></a>00550 <span class="keywordflow">case</span> CL_INVALID_ARG_VALUE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a>(); <span class="keywordflow">break</span>;
-<a name="l00551"></a>00551 <span class="keywordflow">case</span> CL_INVALID_ARG_SIZE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00552"></a>00552 <span class="keywordflow">case</span> CL_INVALID_KERNEL_ARGS: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a>(); <span class="keywordflow">break</span>;
-<a name="l00553"></a>00553 <span class="keywordflow">case</span> CL_INVALID_WORK_DIMENSION: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a>(); <span class="keywordflow">break</span>;
-<a name="l00554"></a>00554 <span class="keywordflow">case</span> CL_INVALID_WORK_GROUP_SIZE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00555"></a>00555 <span class="keywordflow">case</span> CL_INVALID_WORK_ITEM_SIZE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00556"></a>00556 <span class="keywordflow">case</span> CL_INVALID_GLOBAL_OFFSET: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a>(); <span class="keywordflow">break</span>;
-<a name="l00557"></a>00557 <span class="keywordflow">case</span> CL_INVALID_EVENT_WAIT_LIST: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a>(); <span class="keywordflow">break</span>;
-<a name="l00558"></a>00558 <span class="keywordflow">case</span> CL_INVALID_EVENT: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a>(); <span class="keywordflow">break</span>;
-<a name="l00559"></a>00559 <span class="keywordflow">case</span> CL_INVALID_OPERATION: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a>(); <span class="keywordflow">break</span>;
-<a name="l00560"></a>00560 <span class="keywordflow">case</span> CL_INVALID_GL_OBJECT: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a>(); <span class="keywordflow">break</span>;
-<a name="l00561"></a>00561 <span class="keywordflow">case</span> CL_INVALID_BUFFER_SIZE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00562"></a>00562 <span class="keywordflow">case</span> CL_INVALID_MIP_LEVEL: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a>(); <span class="keywordflow">break</span>;
-<a name="l00563"></a>00563 <span class="keywordflow">case</span> CL_INVALID_GLOBAL_WORK_SIZE: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a>(); <span class="keywordflow">break</span>;
-<a name="l00564"></a>00564 <span class="preprocessor"> #ifdef CL_INVALID_PROPERTY</span>
-<a name="l00565"></a>00565 <span class="preprocessor"></span> <span class="keywordflow">case</span> CL_INVALID_PROPERTY: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a>(); <span class="keywordflow">break</span>;
-<a name="l00566"></a>00566 <span class="preprocessor"> #endif</span>
-<a name="l00567"></a>00567 <span class="preprocessor"></span> <span class="comment">// return "CL_INVALID_GLOBAL_WORK_SIZE";</span>
-<a name="l00568"></a>00568
-<a name="l00569"></a>00569 <span class="keywordflow">default</span>: <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a>();
-<a name="l00570"></a>00570 }
-<a name="l00571"></a>00571
-<a name="l00572"></a>00572 } <span class="comment">//getErrorString</span>
-<a name="l00573"></a>00573
-<a name="l00578"></a><a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">00578</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e" title="Checks whether an OpenCL error has occured.">checkError</a>(cl_int err, <span class="keyword">const</span> std::string & file, <span class="keyword">const</span> std::string & func, <span class="keywordtype">int</span> line)
-<a name="l00579"></a>00579 {
-<a name="l00580"></a>00580 <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00581"></a>00581 {
-<a name="l00582"></a>00582 <span class="preprocessor"> #ifdef VIENNACL_DEBUG_ALL</span>
-<a name="l00583"></a>00583 <span class="preprocessor"></span> std::cerr << <span class="stringliteral">"ViennaCL: Error "</span> << err << <span class="stringliteral">" in function "</span> << func << <span class="stringliteral">" ( "</span><< file << <span class="stringliteral">":"</span> << line << <span class="stringliteral">" ) "</span> << std::endl;
-<a name="l00584"></a>00584 <span class="preprocessor"> #endif</span>
-<a name="l00585"></a>00585 <span class="preprocessor"></span> <a class="code" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334" title="Trows exceptions that reflect OpenCL error codes.">raise_exception</a>(err);
-<a name="l00586"></a>00586 }
-<a name="l00587"></a>00587 } <span class="comment">//checkError()</span>
-<a name="l00588"></a>00588
-<a name="l00589"></a>00589 }; <span class="comment">//struct </span>
-<a name="l00590"></a>00590
-<a name="l00591"></a><a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">00591</a> <span class="preprocessor"> #define VIENNACL_ERR_CHECK(err) viennacl::ocl::error_checker<void>::checkError(err, __FILE__, __FUNCTION__, __LINE__);</span>
-<a name="l00592"></a>00592 <span class="preprocessor"></span>
-<a name="l00593"></a>00593 } <span class="comment">//namespace ocl</span>
-<a name="l00594"></a>00594 } <span class="comment">//namespace viennacl</span>
-<a name="l00595"></a>00595
-<a name="l00596"></a>00596 <span class="preprocessor">#endif</span>
-<a name="l00597"></a>00597 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/files.html b/doc/doxygen/html/files.html
deleted file mode 100644
index dba1c74..0000000
--- a/doc/doxygen/html/files.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: File Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>File List</h1> </div>
-</div>
-<div class="contents">
-Here is a list of all files with brief descriptions:<table>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="compressed__matrix_8hpp.html">compressed_matrix.hpp</a> <a href="compressed__matrix_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the compressed_matrix class </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="coordinate__matrix_8hpp.html">coordinate_matrix.hpp</a> <a href="coordinate__matrix_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the coordinate_matrix class </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h.html">forwards.h</a> <a href="forwards_8h_source.html">[code]</a></td><td class="indexvalue">This file provides the forward declarations for the main types used within ViennaCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp.html">matrix.hpp</a> <a href="matrix_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the dense matrix class </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="scalar_8hpp.html">scalar.hpp</a> <a href="scalar_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of the ViennaCL scalar class </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="vector_8hpp.html">vector.hpp</a> <a href="vector_8hpp_source.html">[code]</a></td><td class="indexvalue">The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations such as norms and inner products are located in <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">linalg/vector_operations.hpp</a> </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp.html">kernel_parameters.hpp</a> <a href="kernel__parameters_8hpp_source.html">[code]</a></td><td class="indexvalue">This file holds the code necessary for reading kernel parameters from XML files using pugixml </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="matrix__market_8hpp.html">matrix_market.hpp</a> <a href="matrix__market_8hpp_source.html">[code]</a></td><td class="indexvalue">A reader and writer for the matrix market format is implemented here </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="bicgstab_8hpp.html">bicgstab.hpp</a> <a href="bicgstab_8hpp_source.html">[code]</a></td><td class="indexvalue">The stabilized bi-conjugate gradient method is implemented here </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="cg_8hpp.html">cg.hpp</a> <a href="cg_8hpp_source.html">[code]</a></td><td class="indexvalue">The conjugate gradient method is implemented here </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="compressed__matrix__operations_8hpp.html">compressed_matrix_operations.hpp</a> <a href="compressed__matrix__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of operations using compressed_matrix </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="coordinate__matrix__operations_8hpp.html">coordinate_matrix_operations.hpp</a> <a href="coordinate__matrix__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of operations using coordinate_matrix </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="direct__solve_8hpp.html">direct_solve.hpp</a> <a href="direct__solve_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of dense direct solvers are found here </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="gmres_8hpp.html">gmres.hpp</a> <a href="gmres_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of the generalized minimum residual method are in this file </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="ilu_8hpp.html">ilu.hpp</a> <a href="ilu_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of incomplete factorization preconditioners </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="inner__prod_8hpp.html">inner_prod.hpp</a> <a href="inner__prod_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for the computation of inner products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="jacobi__precond_8hpp.html">jacobi_precond.hpp</a> <a href="jacobi__precond_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a simple Jacobi preconditioner </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="matrix__operations_8hpp.html">matrix_operations.hpp</a> <a href="matrix__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of dense matrix related operations. also matrix-vector products </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="norm__1_8hpp.html">norm_1.hpp</a> <a href="norm__1_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for the l^1-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="norm__2_8hpp.html">norm_2.hpp</a> <a href="norm__2_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for the l^2-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="norm__inf_8hpp.html">norm_inf.hpp</a> <a href="norm__inf_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="prod_8hpp.html">prod.hpp</a> <a href="prod_8hpp_source.html">[code]</a></td><td class="indexvalue">Generic interface for matrix-vector and matrix-matrix products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>, <a class="el" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>, <a class="el" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a> and <a class="el" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a> for implementations </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="row__scaling_8hpp.html">row_scaling.hpp</a> <a href="row__scaling_8hpp_source.html">[code]</a></td><td class="indexvalue">A row normalization preconditioner is implemented here </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp.html">tag_of.hpp</a> <a href="tag__of_8hpp_source.html">[code]</a></td><td class="indexvalue">Dispatch facility for distinguishing between ublas, STL and ViennaCL types </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="vector__operations_8hpp.html">vector_operations.hpp</a> <a href="vector__operations_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of vector operations </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h.html">compressed_matrix_kernels.h</a> <a href="compressed__matrix__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__source_8h.html">compressed_matrix_source.h</a> <a href="compressed__matrix__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h.html">coordinate_matrix_kernels.h</a> <a href="coordinate__matrix__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__source_8h.html">coordinate_matrix_source.h</a> <a href="coordinate__matrix__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h.html">matrix_col_kernels.h</a> <a href="matrix__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__source_8h.html">matrix_col_source.h</a> <a href="matrix__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__kernels_8h.html">matrix_prod_col_col_col_kernels.h</a> <a href="matrix__prod__col__col__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__source_8h.html">matrix_prod_col_col_col_source.h</a> <a href="matrix__prod__col__col__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__kernels_8h.html">matrix_prod_col_col_row_kernels.h</a> <a href="matrix__prod__col__col__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__source_8h.html">matrix_prod_col_col_row_source.h</a> <a href="matrix__prod__col__col__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__kernels_8h.html">matrix_prod_col_row_col_kernels.h</a> <a href="matrix__prod__col__row__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__source_8h.html">matrix_prod_col_row_col_source.h</a> <a href="matrix__prod__col__row__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__kernels_8h.html">matrix_prod_col_row_row_kernels.h</a> <a href="matrix__prod__col__row__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__source_8h.html">matrix_prod_col_row_row_source.h</a> <a href="matrix__prod__col__row__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__kernels_8h.html">matrix_prod_row_col_col_kernels.h</a> <a href="matrix__prod__row__col__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__source_8h.html">matrix_prod_row_col_col_source.h</a> <a href="matrix__prod__row__col__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__kernels_8h.html">matrix_prod_row_col_row_kernels.h</a> <a href="matrix__prod__row__col__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__source_8h.html">matrix_prod_row_col_row_source.h</a> <a href="matrix__prod__row__col__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__kernels_8h.html">matrix_prod_row_row_col_kernels.h</a> <a href="matrix__prod__row__row__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__source_8h.html">matrix_prod_row_row_col_source.h</a> <a href="matrix__prod__row__row__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__kernels_8h.html">matrix_prod_row_row_row_kernels.h</a> <a href="matrix__prod__row__row__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__source_8h.html">matrix_prod_row_row_row_source.h</a> <a href="matrix__prod__row__row__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h.html">matrix_row_kernels.h</a> <a href="matrix__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__source_8h.html">matrix_row_source.h</a> <a href="matrix__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__kernels_8h.html">matrix_solve_col_col_kernels.h</a> <a href="matrix__solve__col__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__source_8h.html">matrix_solve_col_col_source.h</a> <a href="matrix__solve__col__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__kernels_8h.html">matrix_solve_col_row_kernels.h</a> <a href="matrix__solve__col__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__source_8h.html">matrix_solve_col_row_source.h</a> <a href="matrix__solve__col__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__kernels_8h.html">matrix_solve_row_col_kernels.h</a> <a href="matrix__solve__row__col__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__source_8h.html">matrix_solve_row_col_source.h</a> <a href="matrix__solve__row__col__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__kernels_8h.html">matrix_solve_row_row_kernels.h</a> <a href="matrix__solve__row__row__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__source_8h.html">matrix_solve_row_row_source.h</a> <a href="matrix__solve__row__row__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__kernels_8h.html">scalar_kernels.h</a> <a href="scalar__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__source_8h.html">scalar_source.h</a> <a href="scalar__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h.html">vector_kernels.h</a> <a href="vector__kernels_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__source_8h.html">vector_source.h</a> <a href="vector__source_8h_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="backend_8hpp.html">backend.hpp</a> <a href="backend_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of the OpenCL backend, where all contexts are stored in </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="command__queue_8hpp.html">command_queue.hpp</a> <a href="command__queue_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementations of command queue representations </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="context_8hpp.html">context.hpp</a> <a href="context_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="device_8hpp.html">device.hpp</a> <a href="device_8hpp_source.html">[code]</a></td><td class="indexvalue">Represents an OpenCL device within ViennaCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="enqueue_8hpp.html">enqueue.hpp</a> <a href="enqueue_8hpp_source.html">[code]</a></td><td class="indexvalue">Enqueues kernels into command queues </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp.html">error.hpp</a> <a href="error_8hpp_source.html">[code]</a></td><td class="indexvalue">Error handling for the OpenCL layer of ViennaCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h.html">forwards.h</a> <a href="ocl_2forwards_8h_source.html">[code]</a></td><td class="indexvalue">This file provides the forward declarations for the OpenCL layer of ViennaCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp.html">handle.hpp</a> <a href="handle_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="kernel_8hpp.html">kernel.hpp</a> <a href="kernel_8hpp_source.html">[code]</a></td><td class="indexvalue">Representation of an OpenCL kernel in ViennaCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="local__mem_8hpp.html">local_mem.hpp</a> <a href="local__mem_8hpp_source.html">[code]</a></td><td class="indexvalue">A local (shared) memory object for OpenCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="platform_8hpp.html">platform.hpp</a> <a href="platform_8hpp_source.html">[code]</a></td><td class="indexvalue">Implements a OpenCL platform within ViennaCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="program_8hpp.html">program.hpp</a> <a href="program_8hpp_source.html">[code]</a></td><td class="indexvalue">Implements an OpenCL program class for ViennaCL </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="utils_8hpp.html">utils.hpp</a> <a href="utils_8hpp_source.html">[code]</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="adapter_8hpp.html">adapter.hpp</a> <a href="adapter_8hpp_source.html">[code]</a></td><td class="indexvalue">Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> > </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="entry__proxy_8hpp.html">entry_proxy.hpp</a> <a href="entry__proxy_8hpp_source.html">[code]</a></td><td class="indexvalue">A proxy class for entries in a vector </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp.html">matrix_kernel_class_deducer.hpp</a> <a href="matrix__kernel__class__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp.html">matrix_prod_kernel_class_deducer.hpp</a> <a href="matrix__prod__kernel__class__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp.html">matrix_size_deducer.hpp</a> <a href="matrix__size__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Helper implementations that deduce the dimensions of the supplied matrix-valued expressions </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp.html">matrix_solve_kernel_class_deducer.hpp</a> <a href="matrix__solve__kernel__class__deducer_8hpp_source.html">[code]</a></td><td class="indexvalue">Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver </td></tr>
- <tr><td class="indexkey">/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp.html">tools.hpp</a> <a href="tools_8hpp_source.html">[code]</a></td><td class="indexvalue">Various little tools used here and there in ViennaCL </td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/forwards_8h.html b/doc/doxygen/html/forwards_8h.html
deleted file mode 100644
index 71608e8..0000000
--- a/doc/doxygen/html/forwards_8h.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#typedef-members">Typedefs</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>This file provides the forward declarations for the main types used within ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <cstddef></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-
-<p><a href="forwards_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix. <a href="structviennacl_1_1linalg_1_1lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix. <a href="structviennacl_1_1linalg_1_1upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix with unit diagonal. <a href="structviennacl_1_1linalg_1_1unit__lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix with unit diagonal. <a href="structviennacl_1_1linalg_1_1unit__upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing the use of no preconditioner. <a href="classviennacl_1_1linalg_1_1no__precond.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. <a href="#afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector. <a href="#af638a30a9dd2001143b4c92072c76d48"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector. <a href="#a9164bd549b986f39b035c24a426869b9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">norm_1_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^1-norm of a vector. <a href="#a2479f0743a32118e916cca8edb895c30"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">norm_2_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^2-norm of a vector - implementation. <a href="#a96a2ee028641ffd7b80e6a1bfad34c6a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">norm_inf_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the supremum-norm of a vector. <a href="#a43009c5365c78c81463f54c2848378ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication. <a href="#a5e71c3317fe25d0ce5e31be66597d8bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">prod_impl</a> (const compressed_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#aa965a1bc156b037f57b6a449dde4c7d1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">prod_impl</a> (const coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a79ec888c8ac1026f4591179fdd19e0de"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT1, unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors. <a href="#a23fbff833bbc632131b761e732bce72b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). <a href="#afc191e1a26f0c0037e320a3b7dc831cc"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>This file provides the forward declarations for the main types used within ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/forwards_8h_source.html b/doc/doxygen/html/forwards_8h_source.html
deleted file mode 100644
index c93d561..0000000
--- a/doc/doxygen/html/forwards_8h_source.html
+++ /dev/null
@@ -1,236 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/forwards.h</h1> </div>
-</div>
-<div class="contents">
-<a href="forwards_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00028"></a>00028 <span class="preprocessor">#ifndef VIENNACL_FORWARDS_H</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define VIENNACL_FORWARDS_H</span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span>
-<a name="l00031"></a>00031 <span class="comment">//#include <stddef.h></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <cstddef></span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>viennacl
-<a name="l00036"></a>00036 {
-<a name="l00037"></a><a class="code" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">00037</a> <span class="keyword">typedef</span> std::size_t vcl_size_t;
-<a name="l00038"></a><a class="code" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">00038</a> <span class="keyword">typedef</span> std::ptrdiff_t vcl_ptrdiff_t;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040
-<a name="l00042"></a>00042 <span class="keyword">struct </span>op_add;
-<a name="l00044"></a>00044 <span class="keyword">struct </span>op_sub;
-<a name="l00046"></a>00046 <span class="keyword">struct </span>op_div;
-<a name="l00047"></a>00047
-<a name="l00049"></a>00049 <span class="keyword">struct </span>op_inner_prod;
-<a name="l00050"></a>00050
-<a name="l00052"></a>00052 <span class="keyword">struct </span>op_norm_1;
-<a name="l00053"></a>00053
-<a name="l00055"></a>00055 <span class="keyword">struct </span>op_norm_2;
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">struct </span>op_norm_inf;
-<a name="l00059"></a>00059
-<a name="l00061"></a>00061 <span class="keyword">struct </span>op_prod;
-<a name="l00062"></a>00062
-<a name="l00064"></a>00064 <span class="keyword">struct </span>op_trans;
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <span class="comment">//forward declaration of basic types:</span>
-<a name="l00068"></a>00068 <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
-<a name="l00069"></a>00069 <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a>;
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00072"></a>00072 <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression</a>;
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE>
-<a name="l00075"></a>00075 <span class="keyword">class </span><a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy</a>;
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00078"></a>00078 <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>;
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00081"></a>00081 <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator</a>;
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00084"></a>00084 <span class="keyword">class </span><a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator</a>;
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 1>
-<a name="l00087"></a>00087 <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>;
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="comment">//the following forwards are needed for GMRES</span>
-<a name="l00090"></a>00090 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l00091"></a>00091 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l00092"></a>00092 CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l00093"></a>00093 <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin);
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l00096"></a>00096 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l00097"></a>00097 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l00098"></a>00098 <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin);
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l00101"></a>00101 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l00102"></a>00102 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l00103"></a>00103 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin);
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a>;
-<a name="l00107"></a>00107 <span class="keyword">struct </span><a class="code" href="structviennacl_1_1column__major.html">column_major</a>;
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__iteration.html" title="A tag indicating iteration along increasing row index of a matrix.">row_iteration</a>;
-<a name="l00110"></a>00110 <span class="keyword">struct </span><a class="code" href="structviennacl_1_1col__iteration.html" title="A tag indicating iteration along increasing columns index of a matrix.">col_iteration</a>;
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00113"></a>00113 <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>;
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115 <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F = row_major, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 1>
-<a name="l00116"></a>00116 <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>;
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 1>
-<a name="l00119"></a>00119 <span class="keyword">class </span><a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>;
-<a name="l00120"></a>00120
-<a name="l00121"></a>00121 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT = 128>
-<a name="l00122"></a>00122 <span class="keyword">class </span><a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>;
-<a name="l00123"></a>00123
-<a name="l00124"></a><a class="code" href="namespaceviennacl_1_1tools.html">00124</a> <span class="keyword">namespace </span>tools
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 <span class="comment">//helper for matrix row/col iterators </span>
-<a name="l00127"></a>00127 <span class="comment">//must be specialized for every viennacl matrix type</span>
-<a name="l00128"></a>00128 <span class="keyword">template</span> <<span class="keyword">typename</span> ROWCOL, <span class="keyword">typename</span> MATRIXTYPE>
-<a name="l00129"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">00129</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a>
-<a name="l00130"></a>00130 {
-<a name="l00131"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">00131</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">apply</a>(<span class="keyword">const</span> MATRIXTYPE & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & col)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIXTYPE::ERROR_SPECIALIZATION_FOR_THIS_MATRIX_TYPE_MISSING ErrorIndicator;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135 };
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00138"></a><a class="code" href="namespaceviennacl_1_1linalg.html">00138</a> <span class="keyword">namespace </span>linalg
-<a name="l00139"></a>00139 {
-<a name="l00140"></a>00140 <span class="comment">//forward definition of norm_1_impl function</span>
-<a name="l00141"></a>00141 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00142"></a>00142 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30" title="Computes the l^1-norm of a vector.">norm_1_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00143"></a>00143 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 <span class="comment">//forward definition of norm_2_impl function</span>
-<a name="l00146"></a>00146 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00147"></a>00147 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a" title="Computes the l^2-norm of a vector - implementation.">norm_2_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00148"></a>00148 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <span class="comment">//forward definition of norm_inf_impl function</span>
-<a name="l00151"></a>00151 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00152"></a>00152 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca" title="Computes the supremum-norm of a vector.">norm_inf_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00153"></a>00153 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="comment">//forward definition of prod_impl functions</span>
-<a name="l00156"></a>00156 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00157"></a>00157 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00158"></a>00158 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00159"></a>00159 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> &,
-<a name="l00160"></a>00160 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> &);
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00163"></a>00163 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::compressed_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00164"></a>00164 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00165"></a>00165 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">viennacl::compressed_matrix<SCALARTYPE, ALIGNMENT></a> & ,
-<a name="l00166"></a>00166 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> &);
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00169"></a>00169 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00170"></a>00170 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00171"></a>00171 op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<SCALARTYPE, ALIGNMENT></a> & ,
-<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> &);
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="comment">//forward definition of inner_prod_impl function</span>
-<a name="l00176"></a>00176 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00177"></a>00177 <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1></a>,
-<a name="l00178"></a>00178 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a>,
-<a name="l00179"></a>00179 viennacl::op_inner_prod >
-<a name="l00180"></a>00180 <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT1></a> &,
-<a name="l00181"></a>00181 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a> &);
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00184"></a>00184 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00185"></a>00185 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00186"></a>00186 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result);
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188
-<a name="l00190"></a><a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html">00190</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html" title="A tag class representing a lower triangular matrix.">lower_tag</a>
-<a name="l00191"></a>00191 {
-<a name="l00192"></a><a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">00192</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"lower"</span>; }
-<a name="l00193"></a>00193 }; <span class="comment">//lower triangular matrix</span>
-<a name="l00195"></a><a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html">00195</a> <span class="comment"></span> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a>
-<a name="l00196"></a>00196 {
-<a name="l00197"></a><a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">00197</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"upper"</span>; }
-<a name="l00198"></a>00198 }; <span class="comment">//upper triangular matrix</span>
-<a name="l00200"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">00200</a> <span class="comment"></span> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>
-<a name="l00201"></a>00201 {
-<a name="l00202"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">00202</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"unit_lower"</span>; }
-<a name="l00203"></a>00203 }; <span class="comment">//unit lower triangular matrix</span>
-<a name="l00205"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">00205</a> <span class="comment"></span> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html" title="A tag class representing an upper triangular matrix with unit diagonal.">unit_upper_tag</a>
-<a name="l00206"></a>00206 {
-<a name="l00207"></a><a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">00207</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a>() { <span class="keywordflow">return</span> <span class="stringliteral">"unit_upper"</span>; }
-<a name="l00208"></a>00208 }; <span class="comment">//unit upper triangular matrix</span>
-<a name="l00209"></a>00209
-<a name="l00210"></a>00210 <span class="comment">//preconditioner tags</span>
-<a name="l00211"></a>00211 <span class="keyword">class </span>ilut_tag;
-<a name="l00212"></a>00212
-<a name="l00214"></a><a class="code" href="classviennacl_1_1linalg_1_1no__precond.html">00214</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">no_precond</a>
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <span class="keyword">public</span>:
-<a name="l00217"></a>00217 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00218"></a><a class="code" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00218</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const </span>{}
-<a name="l00219"></a>00219 };
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221
-<a name="l00222"></a>00222 } <span class="comment">//namespace linalg</span>
-<a name="l00223"></a>00223 } <span class="comment">//namespace viennacl</span>
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225 <span class="preprocessor">#endif</span>
-<a name="l00226"></a>00226 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions.html b/doc/doxygen/html/functions.html
deleted file mode 100644
index ef87596..0000000
--- a/doc/doxygen/html/functions.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add_data_node()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">parameter_database</a>
-</li>
-<li>add_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">context</a>
-, <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">parameter_database</a>
-</li>
-<li>add_kernel()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">parameter_database</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">program</a>
-</li>
-<li>add_parameter()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">parameter_database</a>
-</li>
-<li>add_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">context</a>
-</li>
-<li>add_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">context</a>
-</li>
-<li>add_test()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">parameter_database</a>
-</li>
-<li>apply()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">jacobi_precond< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< ScalarType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">no_precond</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">ilut_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">row_scaling< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>arg()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x62.html b/doc/doxygen/html/functions_0x62.html
deleted file mode 100644
index bcdf31f..0000000
--- a/doc/doxygen/html/functions_0x62.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li class="current"><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
-<li>begin()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>begin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>begin2()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>bicgstab_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">bicgstab_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x63.html b/doc/doxygen/html/functions_0x63.html
deleted file mode 100644
index ae7b976..0000000
--- a/doc/doxygen/html/functions_0x63.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li class="current"><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>cg_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">cg_tag</a>
-</li>
-<li>checkError()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">error_checker< T ></a>
-</li>
-<li>clear()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>command_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">command_queue</a>
-</li>
-<li>compressed_matrix()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">device</a>
-</li>
-<li>const_iterator
-: <a class="el" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>const_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_reverse_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>const_sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_vector_iterator()
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>context()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a>
-</li>
-<li>coordinate_matrix()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>copy
-: <a class="el" href="classviennacl_1_1matrix.html#a16f29c7064c0aa97dfbf324336c5176a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>create_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5">context</a>
-</li>
-<li>current_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">backend< dummy ></a>
-</li>
-<li>current_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x64.html b/doc/doxygen/html/functions_0x64.html
deleted file mode 100644
index c6796f0..0000000
--- a/doc/doxygen/html/functions_0x64.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li class="current"><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dec()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">handle_inc_dec_helper< cl_program ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">handle< OCL_TYPE ></a>
-</li>
-<li>default_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">context</a>
-</li>
-<li>device()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>
-</li>
-<li>device_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">context</a>
-</li>
-<li>devices()
-: <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">platform</a>
-, <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">parameter_database</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">context</a>
-</li>
-<li>devices_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">parameter_database</a>
-</li>
-<li>difference_type
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>doc
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">parameter_database</a>
-</li>
-<li>double_support()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">device</a>
-</li>
-<li>double_support_extension()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">device</a>
-</li>
-<li>driver_version()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">device</a>
-</li>
-<li>dump()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afd80b88d872b6d3dec066c52f2ccc5de">parameter_database</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x65.html b/doc/doxygen/html/functions_0x65.html
deleted file mode 100644
index 43a6f9d..0000000
--- a/doc/doxygen/html/functions_0x65.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li class="current"><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>elements_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>empty()
-: <a class="el" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>end()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a350132543d80a1c1e5be844e6d2878ea">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>end1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>end2()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>enqueue
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084">kernel</a>
-</li>
-<li>entry_proxy()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>error()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a086bf00d9923c3f80f62de3f8491a322">cg_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x66.html b/doc/doxygen/html/functions_0x66.html
deleted file mode 100644
index a179497..0000000
--- a/doc/doxygen/html/functions_0x66.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li class="current"><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_copy
-: <a class="el" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>fast_swap()
-: <a class="el" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>finish()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">command_queue</a>
-</li>
-<li>flush()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">command_queue</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x67.html b/doc/doxygen/html/functions_0x67.html
deleted file mode 100644
index e2d5899..0000000
--- a/doc/doxygen/html/functions_0x67.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li class="current"><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get()
-: <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a>
-</li>
-<li>get_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">ilut_tag</a>
-</li>
-<li>get_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">ilut_tag</a>
-</li>
-<li>get_kernel()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">program</a>
-</li>
-<li>get_lhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>get_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">context</a>
-</li>
-<li>get_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">backend< dummy ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">context</a>
-</li>
-<li>get_rhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>global_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">device</a>
-</li>
-<li>global_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">kernel</a>
-</li>
-<li>gmres_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x68.html b/doc/doxygen/html/functions_0x68.html
deleted file mode 100644
index 7bf70a3..0000000
--- a/doc/doxygen/html/functions_0x68.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li class="current"><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>handle()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">command_queue</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">context</a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle< OCL_TYPE ></a>
-</li>
-<li>handle1()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle12()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle2()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle3()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x69.html b/doc/doxygen/html/functions_0x69.html
deleted file mode 100644
index 8e87c47..0000000
--- a/doc/doxygen/html/functions_0x69.html
+++ /dev/null
@@ -1,210 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li class="current"><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>id()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">platform</a>
-</li>
-<li>ilut_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< MatrixType ></a>
-</li>
-<li>ilut_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">ilut_tag</a>
-</li>
-<li>inc()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">handle< OCL_TYPE ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">handle_inc_dec_helper< cl_program ></a>
-</li>
-<li>index()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>index1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>index2()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>index_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>info()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">platform</a>
-</li>
-<li>init()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< double, 1 ></a>
-</li>
-<li>init_gpu()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-<li>internal_nnz()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>internal_size()
-: <a class="el" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>internal_size1()
-: <a class="el" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">row_major</a>
-, <a class="el" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">column_major</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>internal_size2()
-: <a class="el" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">row_major</a>
-, <a class="el" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">column_major</a>
-</li>
-<li>iterator
-: <a class="el" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>iters()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">cg_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6a.html b/doc/doxygen/html/functions_0x6a.html
deleted file mode 100644
index 1a54380..0000000
--- a/doc/doxygen/html/functions_0x6a.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li class="current"><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
-<li>jacobi_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6b.html b/doc/doxygen/html/functions_0x6b.html
deleted file mode 100644
index ca9ea02..0000000
--- a/doc/doxygen/html/functions_0x6b.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li class="current"><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">program</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>
-</li>
-<li>kernels
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">parameter_database</a>
-</li>
-<li>kernels_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">parameter_database</a>
-</li>
-<li>krylov_dim()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6c.html b/doc/doxygen/html/functions_0x6c.html
deleted file mode 100644
index 29ce116..0000000
--- a/doc/doxygen/html/functions_0x6c.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li class="current"><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>last
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">parameter_database</a>
-</li>
-<li>lhs()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>load()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">parameter_database</a>
-</li>
-<li>local_mem()
-: <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a>
-</li>
-<li>local_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">device</a>
-</li>
-<li>local_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af38f6ba2df03771a43aacc275b64fc1c">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6d.html b/doc/doxygen/html/functions_0x6d.html
deleted file mode 100644
index 1453368..0000000
--- a/doc/doxygen/html/functions_0x6d.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li class="current"><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>matrix()
-: <a class="el" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>matrix_expression()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">matrix_expression< LHS, RHS, OP ></a>
-</li>
-<li>matrix_iterator()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>max_allocable_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">device</a>
-</li>
-<li>max_compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">device</a>
-</li>
-<li>max_iterations()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">gmres_tag</a>
-</li>
-<li>max_restarts()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">gmres_tag</a>
-</li>
-<li>max_size()
-: <a class="el" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>max_work_group_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">device</a>
-</li>
-<li>max_workgroup_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">device</a>
-</li>
-<li>mem_index()
-: <a class="el" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">column_major</a>
-, <a class="el" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">row_major</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6e.html b/doc/doxygen/html/functions_0x6e.html
deleted file mode 100644
index 61f13df..0000000
--- a/doc/doxygen/html/functions_0x6e.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li class="current"><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name()
-: <a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">lower_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">upper_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">unit_upper_tag</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">program</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">kernel</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">unit_lower_tag</a>
-</li>
-<li>nnz()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>norm()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x6f.html b/doc/doxygen/html/functions_0x6f.html
deleted file mode 100644
index e7ab7dd..0000000
--- a/doc/doxygen/html/functions_0x6f.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li class="current"><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator base_type()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator OCL_TYPE()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">handle< OCL_TYPE ></a>
-</li>
-<li>operator ScalarType()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>operator SCALARTYPE()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>operator TYPE()
-: <a class="el" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">scalar< TYPE ></a>
-</li>
-<li>operator!=()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>operator()()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">kernel</a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>operator*()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator*=()
-: <a class="el" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+()
-: <a class="el" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator++()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+=()
-: <a class="el" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-()
-: <a class="el" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-=()
-: <a class="el" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/()
-: <a class="el" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/=()
-: <a class="el" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator<()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">context</a>
-</li>
-<li>operator=()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">program</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2a7d2a919692ddc123ebd1452d374d5b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">command_queue</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a276192f199fd2252c7296bd57dbb1a39">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0acfd903198ff1e36ff67f62d67d7189">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator==()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">device</a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>operator[]()
-: <a class="el" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x70.html b/doc/doxygen/html/functions_0x70.html
deleted file mode 100644
index e3ebe2e..0000000
--- a/doc/doxygen/html/functions_0x70.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li class="current"><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>parameter_database()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a>
-</li>
-<li>parameters
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameter_database</a>
-</li>
-<li>parameters_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameter_database</a>
-</li>
-<li>platform()
-: <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a>
-</li>
-<li>program()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a>
-</li>
-<li>program_name()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 4 ></a>
-</li>
-<li>program_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x72.html b/doc/doxygen/html/functions_0x72.html
deleted file mode 100644
index 828fb5a..0000000
--- a/doc/doxygen/html/functions_0x72.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li class="current"><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>raise_exception()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">error_checker< T ></a>
-</li>
-<li>rbegin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>rend1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>reserve()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>resize()
-: <a class="el" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>ResultType
-: <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CPU_SCALAR_TYPE_DEDUCER< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< const T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">VECTOR_EXTRACTOR< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CPU_SCALAR_TYPE_DEDUCER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a>
-</li>
-<li>rhs()
-: <a class="el" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">vector_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">matrix_expression< LHS, RHS, OP ></a>
-</li>
-<li>root
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">parameter_database</a>
-</li>
-<li>row_scaling()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">row_scaling< MatrixType ></a>
-</li>
-<li>row_scaling_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x73.html b/doc/doxygen/html/functions_0x73.html
deleted file mode 100644
index fdcbe50..0000000
--- a/doc/doxygen/html/functions_0x73.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li class="current"><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar()
-: <a class="el" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">scalar< TYPE ></a>
-</li>
-<li>scalar_expression()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>ScalarType
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>set()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">backend< dummy ></a>
-</li>
-<li>set_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">ilut_tag</a>
-</li>
-<li>set_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">ilut_tag</a>
-</li>
-<li>setup_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">backend< dummy ></a>
-</li>
-<li>size()
-: <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da">local_mem</a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">vector_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">local_mem</a>
-</li>
-<li>size1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a5dc0d7ea09d7bebc57839beeae58a3f7">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>size2()
-: <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>size_type
-: <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>swap()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>switch_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">backend< dummy ></a>
-</li>
-<li>switch_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a9f74ed0d416018dc2825ddc6f4d8101e">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x74.html b/doc/doxygen/html/functions_0x74.html
deleted file mode 100644
index d203876..0000000
--- a/doc/doxygen/html/functions_0x74.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li class="current"><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>tests
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">parameter_database</a>
-</li>
-<li>tests_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">parameter_database</a>
-</li>
-<li>tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">bicgstab_tag</a>
-</li>
-<li>type
-: <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::compressed_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix< T, F, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::vector< T, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::vector< T, A >, A > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< T, A > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">tag_of< Sequence, Active ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">enable_if< b, T ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">device</a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::coordinate_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">value_type< T ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x76.html b/doc/doxygen/html/functions_0x76.html
deleted file mode 100644
index 6441a31..0000000
--- a/doc/doxygen/html/functions_0x76.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li class="current"><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value
-: <a class="el" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">is_mtl4< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">is_mtl4< viennacl::tag_mtl4 ></a>
-, <a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">is_eigen< viennacl::tag_eigen ></a>
-, <a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">is_stl< viennacl::tag_stl ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">is_viennacl< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">is_ublas< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">is_viennacl< viennacl::tag_viennacl ></a>
-, <a class="el" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">is_eigen< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">is_ublas< viennacl::tag_ublas ></a>
-, <a class="el" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">is_stl< Tag ></a>
-</li>
-<li>value_type
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>vector()
-: <a class="el" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>vector_expression()
-: <a class="el" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>vector_iterator()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>VectorType
-: <a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">vector_expression< LHS, RHS, OP ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_0x7e.html b/doc/doxygen/html/functions_0x7e.html
deleted file mode 100644
index e8a90b0..0000000
--- a/doc/doxygen/html/functions_0x7e.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions.html#index_a"><span>a</span></a></li>
- <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
- <li class="current"><a href="functions_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all struct and union fields with links to the structures/unions they belong to:
-
-<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
-<li>~handle()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">handle< OCL_TYPE ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_eval.html b/doc/doxygen/html/functions_eval.html
deleted file mode 100644
index 9238477..0000000
--- a/doc/doxygen/html/functions_eval.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Enumerator</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li class="current"><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
- <ul>
-<li>value
-: <a class="el" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">is_mtl4< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">is_viennacl< viennacl::tag_viennacl ></a>
-, <a class="el" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">is_viennacl< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">is_stl< viennacl::tag_stl ></a>
-, <a class="el" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">is_stl< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">is_ublas< viennacl::tag_ublas ></a>
-, <a class="el" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">is_ublas< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">is_eigen< viennacl::tag_eigen ></a>
-, <a class="el" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">is_eigen< Tag ></a>
-, <a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">is_mtl4< viennacl::tag_mtl4 ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func.html b/doc/doxygen/html/functions_func.html
deleted file mode 100644
index 0185231..0000000
--- a/doc/doxygen/html/functions_func.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add_data_node()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">parameter_database</a>
-</li>
-<li>add_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#acfd4efd12222f075766bda8ad1557cf5">context</a>
-, <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">parameter_database</a>
-</li>
-<li>add_kernel()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">parameter_database</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">program</a>
-</li>
-<li>add_parameter()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">parameter_database</a>
-</li>
-<li>add_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb">context</a>
-</li>
-<li>add_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a52bf0f755d6ac169258502c22b179d3f">context</a>
-</li>
-<li>add_test()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">parameter_database</a>
-</li>
-<li>apply()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">jacobi_precond< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< ScalarType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">no_precond</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">ilut_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">row_scaling< MatrixType ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">DOUBLE_PRECISION_CHECKER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>arg()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x62.html b/doc/doxygen/html/functions_func_0x62.html
deleted file mode 100644
index 3d65937..0000000
--- a/doc/doxygen/html/functions_func_0x62.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li class="current"><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
-<li>begin()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ab48a06d327e6296423955301ede64223">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aca3adf2f1528779c11d9abde704c2e69">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>begin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a5b9dc1969b4f2a110d0cec988eb4b1ea">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a61247f52ba999959dea8c58d3e8bc9a6">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>begin2()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a0fc615f1d97d2b19550357e227f85485">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8799eeb54a7eccddce5661c438d535f3">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>bicgstab_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a5bc5a824cc4327c98fba2137408743e5">bicgstab_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x63.html b/doc/doxygen/html/functions_func_0x63.html
deleted file mode 100644
index 9b27ef7..0000000
--- a/doc/doxygen/html/functions_func_0x63.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li class="current"><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>cg_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a987be47faf08698e2775045a23de5abe">cg_tag</a>
-</li>
-<li>checkError()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">error_checker< T ></a>
-</li>
-<li>clear()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac8bb3912a3ce86b15842e79d0b421204">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>command_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8d0b958ef5c2d71eceeccafc994ef5d6">command_queue</a>
-</li>
-<li>compressed_matrix()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a837bbcb68157a2e753f0ac1632a6ce00">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae641ec7369f4552b2d0bfcdd62ce9204">device</a>
-</li>
-<li>const_sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a7e6adc520f4881192216bb7352aa3eb9">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>const_sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adc6d39eae2e1a492baf46df00aefbbd4">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_vector_iterator()
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>context()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a23a1f7bd41068b622c4015f5654ee3f3">context</a>
-</li>
-<li>coordinate_matrix()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#ab6d3264162d39010d13f24c98eaeb528">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>create_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a1e038c8113ae2ce29ce49264573aaad3">context</a>
-</li>
-<li>current_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a672f8aadf6dc07b765887b69d4ebbf7d">backend< dummy ></a>
-</li>
-<li>current_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ad1be9bca91f95427bc2875827baadab4">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x64.html b/doc/doxygen/html/functions_func_0x64.html
deleted file mode 100644
index 83a0404..0000000
--- a/doc/doxygen/html/functions_func_0x64.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li class="current"><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dec()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">handle_inc_dec_helper< cl_program ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">handle< OCL_TYPE ></a>
-</li>
-<li>default_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#aa52e297b2bed0c1bda1d7ca8ecdd0620">context</a>
-</li>
-<li>device()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#aa6214b6ab6f2d943669af7dd76cef3a2">device</a>
-</li>
-<li>device_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a2921a13758255386f686ba24ebc86140">context</a>
-</li>
-<li>devices()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#acd464974135d4def89834832207da4b9">context</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">platform</a>
-</li>
-<li>double_support()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab61c1a1216e3f4a8537c6b7bd8a36634">device</a>
-</li>
-<li>double_support_extension()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">device</a>
-</li>
-<li>driver_version()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a662b75f96a75aad23ec28c7c55b64d88">device</a>
-</li>
-<li>dump()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">parameter_database</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x65.html b/doc/doxygen/html/functions_func_0x65.html
deleted file mode 100644
index bde6e57..0000000
--- a/doc/doxygen/html/functions_func_0x65.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li class="current"><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>empty()
-: <a class="el" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>end()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#afda31b300997d15900344226c403b540">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a94a6ed7c67c72c74986b98e1b1343cd1">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>end1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa29369f210d72e323561ef2f45c82e85">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad76ba25f213ed92724da42386c401417">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>end2()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#afe8212a7238c7a15a2731c5f47f775ec">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ac9c68d7fd4173418872d2233f894630c">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>entry_proxy()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a969b706bdf3d3ab2ae15cb24085b0b81">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>error()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a086bf00d9923c3f80f62de3f8491a322">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ae75852c9d9bf937552ee5a1bafea818f">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ae75852c9d9bf937552ee5a1bafea818f">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x66.html b/doc/doxygen/html/functions_func_0x66.html
deleted file mode 100644
index 9adecd7..0000000
--- a/doc/doxygen/html/functions_func_0x66.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li class="current"><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_swap()
-: <a class="el" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>finish()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b">command_queue</a>
-</li>
-<li>flush()
-: <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#ab7e40dfa63aeb29fa6078d04795dffed">command_queue</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x67.html b/doc/doxygen/html/functions_func_0x67.html
deleted file mode 100644
index 23eda1d..0000000
--- a/doc/doxygen/html/functions_func_0x67.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li class="current"><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get()
-: <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< T ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< float ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">to_string< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">first_letter_of_type< double ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a>
-</li>
-<li>get_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">ilut_tag</a>
-</li>
-<li>get_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">ilut_tag</a>
-</li>
-<li>get_kernel()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">program</a>
-</li>
-<li>get_lhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>get_program()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a">context</a>
-</li>
-<li>get_queue()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a825af6f15ffeb9448de160661e5bb377">backend< dummy ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a86cc988061d4ef54550a572141ebbee5">context</a>
-</li>
-<li>get_rhs()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>global_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a3b0090b08cd59decfbc5d27a5865ec88">device</a>
-</li>
-<li>global_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">kernel</a>
-</li>
-<li>gmres_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x68.html b/doc/doxygen/html/functions_func_0x68.html
deleted file mode 100644
index 7fa6378..0000000
--- a/doc/doxygen/html/functions_func_0x68.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li class="current"><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
-<li>handle()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#abe419a13116160fd12b66f47c5180e5c">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">command_queue</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90">context</a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle< OCL_TYPE ></a>
-</li>
-<li>handle1()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle12()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3816ff54e1dc90d0c1650bf44580dac8">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle2()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>handle3()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a3a2d3ce95e8cd635a285c7584c8691a0">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x69.html b/doc/doxygen/html/functions_func_0x69.html
deleted file mode 100644
index 4310568..0000000
--- a/doc/doxygen/html/functions_func_0x69.html
+++ /dev/null
@@ -1,193 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li class="current"><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>id()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ad710a9f9e2cff5a4fe874545102c4c06">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">platform</a>
-</li>
-<li>ilut_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond< MatrixType ></a>
-</li>
-<li>ilut_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">ilut_tag</a>
-</li>
-<li>inc()
-: <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">handle_inc_dec_helper< cl_kernel ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">handle_inc_dec_helper< cl_command_queue ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">handle_inc_dec_helper< cl_context ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">handle< OCL_TYPE ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">handle_inc_dec_helper< cl_mem ></a>
-, <a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">handle_inc_dec_helper< cl_program ></a>
-</li>
-<li>index()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>index1()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a48c62d5afba1616ab8081dc78b276075">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a722f0ccc3f96fb85034a8f00a3860470">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>index2()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a64b95ec918c78480532aa4578eac805f">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a5193f8c88b303f9ebf91c0368be0139b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>info()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a2e1e4e2742b910c44558f9cf8e4add62">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">platform</a>
-</li>
-<li>init()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">scalar< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a02fd73d861ef2e4aabb38c0c9ff82947">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1context.html#a22330fee3e871b4f8467c8952a94597c">context</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae2b7499bf82bcd0c28959118a8cd36b6">device</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">coordinate_matrix< double, 128 ></a>
-</li>
-<li>init_gpu()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-<li>internal_nnz()
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#a7293d194294dda1d5fee2e11c0344d2f">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>internal_size()
-: <a class="el" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>internal_size1()
-: <a class="el" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">column_major</a>
-, <a class="el" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">row_major</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>internal_size2()
-: <a class="el" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">column_major</a>
-, <a class="el" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">row_major</a>
-</li>
-<li>iters()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a0643bc87331b97f3a90e71ec54ff205b">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a0643bc87331b97f3a90e71ec54ff205b">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">gmres_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">cg_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6a.html b/doc/doxygen/html/functions_func_0x6a.html
deleted file mode 100644
index 18bd1bb..0000000
--- a/doc/doxygen/html/functions_func_0x6a.html
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li class="current"><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
-<li>jacobi_precond()
-: <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< MatrixType ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6b.html b/doc/doxygen/html/functions_func_0x6b.html
deleted file mode 100644
index dfc85dc..0000000
--- a/doc/doxygen/html/functions_func_0x6b.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li class="current"><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>
-</li>
-<li>krylov_dim()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">gmres_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6c.html b/doc/doxygen/html/functions_func_0x6c.html
deleted file mode 100644
index 6800480..0000000
--- a/doc/doxygen/html/functions_func_0x6c.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li class="current"><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>lhs()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>load()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">parameter_database</a>
-</li>
-<li>local_mem()
-: <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a>
-</li>
-<li>local_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ae9bd44c2f4e9167a2b839af9f109712c">device</a>
-</li>
-<li>local_work_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9">kernel</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6d.html b/doc/doxygen/html/functions_func_0x6d.html
deleted file mode 100644
index 25faab8..0000000
--- a/doc/doxygen/html/functions_func_0x6d.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li class="current"><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>matrix()
-: <a class="el" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>matrix_expression()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">matrix_expression< LHS, RHS, OP ></a>
-</li>
-<li>matrix_iterator()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>max_allocable_memory()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8d0a43b183ce09a94af13b4d73250280">device</a>
-</li>
-<li>max_compute_units()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99">device</a>
-</li>
-<li>max_iterations()
-: <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">gmres_tag</a>
-</li>
-<li>max_restarts()
-: <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">gmres_tag</a>
-</li>
-<li>max_size()
-: <a class="el" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>max_work_group_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a49dafae1d5a718f0825eefd245b14683">device</a>
-</li>
-<li>max_workgroup_size()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a8c087fde68553db31903df7efd9c033f">device</a>
-</li>
-<li>mem_index()
-: <a class="el" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">column_major</a>
-, <a class="el" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">row_major</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6e.html b/doc/doxygen/html/functions_func_0x6e.html
deleted file mode 100644
index fec0268..0000000
--- a/doc/doxygen/html/functions_func_0x6e.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li class="current"><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name()
-: <a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">lower_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">upper_tag</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">unit_upper_tag</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07">device</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">program</a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">kernel</a>
-, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">unit_lower_tag</a>
-</li>
-<li>nnz()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a972c39774748817eb7b1de422b2eeff6">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#afd2735dee9ed4b7afb979c1f7a7e2c0b">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>norm()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x6f.html b/doc/doxygen/html/functions_func_0x6f.html
deleted file mode 100644
index 19e3faf..0000000
--- a/doc/doxygen/html/functions_func_0x6f.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li class="current"><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator base_type()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator OCL_TYPE()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">handle< OCL_TYPE ></a>
-</li>
-<li>operator ScalarType()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>operator SCALARTYPE()
-: <a class="el" href="classviennacl_1_1entry__proxy.html#accf19b79da67d458fb38880c7a055f8d">entry_proxy< SCALARTYPE ></a>
-</li>
-<li>operator TYPE()
-: <a class="el" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">scalar< TYPE ></a>
-</li>
-<li>operator!=()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>operator()()
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">kernel</a>
-, <a class="el" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">kernel</a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aebaa6cb9a0b72e0792005b58205f2073">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aafa6b6148eaffc7fb4518f473a5432ec">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>operator*()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a46c279075bb75ded776ba3f280e0e38a">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#af2633ec1341d109e979b949d533ff1a2">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator*=()
-: <a class="el" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ac1c79eb6f521714145802e095d2063a5">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+()
-: <a class="el" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator++()
-: <a class="el" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#aa5055e4100b53acad1be8697088ff1dc">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator+=()
-: <a class="el" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a85ccc1b236b4311e422f330ac778e2aa">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#ae111ad2b2148ff97982f897adb9f03a1">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-()
-: <a class="el" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator-=()
-: <a class="el" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a2255068fb4a338c350ceb6c5a933097b">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/()
-: <a class="el" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator/=()
-: <a class="el" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a0eb65cfaa5a879f33d9c389ad9595b0c">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator<()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#ae03a1e8a810ded73e6a457729f02a6fe">context</a>
-</li>
-<li>operator=()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">program</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a6d7884311926bdd52601f636e82d3562">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2a7d2a919692ddc123ebd1452d374d5b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">kernel</a>
-, <a class="el" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4989aaec23a5611beaa87e1653824aa6">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1entry__proxy.html#a1fe82cd71bef5d14642c9ab3d205fd94">entry_proxy< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a9591491bc69f66f82202a86f054ef7ac">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html#a0cbf9009ed0ae2f832646cc41a843a72">command_queue</a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a276192f199fd2252c7296bd57dbb1a39">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a0acfd903198ff1e36ff67f62d67d7189">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>operator==()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a42bb548ced469dc5714f1816603a4d35">device</a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>operator[]()
-: <a class="el" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x70.html b/doc/doxygen/html/functions_func_0x70.html
deleted file mode 100644
index 69d7077..0000000
--- a/doc/doxygen/html/functions_func_0x70.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li class="current"><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>parameter_database()
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a>
-</li>
-<li>platform()
-: <a class="el" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a>
-</li>
-<li>program()
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">program</a>
-</li>
-<li>program_name()
-: <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">scalar< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_solve_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_row< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_row< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_col_col_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< double, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< double, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">coordinate_matrix< float, 128 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 8 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< double, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_col< float, 16 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">compressed_matrix< float, 4 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">matrix_prod_row_row_col< float, 1 ></a>
-, <a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">vector< double, 16 ></a>
-</li>
-<li>program_num()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a05252a29e4e6aa036db1e8b784ed28ec">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x72.html b/doc/doxygen/html/functions_func_0x72.html
deleted file mode 100644
index 5edb163..0000000
--- a/doc/doxygen/html/functions_func_0x72.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li class="current"><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>raise_exception()
-: <a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">error_checker< T ></a>
-</li>
-<li>rbegin1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a8883d4e54ffd15ae74873f3ada1ad43b">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>rend1()
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a88d31c317316b533e580da19c1a625e0">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>reserve()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a4de4afd37fea94c8d1bb2df3eacdcdf1">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>resize()
-: <a class="el" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ab49c1922c02e19737b2330be0b76e455">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a72c98b8dba1f78661da5d71f20550d25">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a72c98b8dba1f78661da5d71f20550d25">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>rhs()
-: <a class="el" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>row_scaling()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a>
-, <a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">row_scaling< MatrixType ></a>
-</li>
-<li>row_scaling_tag()
-: <a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">row_scaling_tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x73.html b/doc/doxygen/html/functions_func_0x73.html
deleted file mode 100644
index 90ac6a0..0000000
--- a/doc/doxygen/html/functions_func_0x73.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li class="current"><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar()
-: <a class="el" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">scalar< TYPE ></a>
-</li>
-<li>scalar_expression()
-: <a class="el" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>set()
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#a30594c885d58e3372b44a4e358715483">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#a4c8905ac7d2b12cdb0d3582561d78eff">backend< dummy ></a>
-</li>
-<li>set_drop_tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">ilut_tag</a>
-</li>
-<li>set_entries_per_row()
-: <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">ilut_tag</a>
-</li>
-<li>setup_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#aee6bc733f6369cd7147ea8904cc8c734">backend< dummy ></a>
-</li>
-<li>size()
-: <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">vector_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">local_mem</a>
-</li>
-<li>size1()
-: <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#a890ed2f6c982169c737bd4f68b2a5db7">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad851ae3af7f4c7b7441b653963dc434a">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>size2()
-: <a class="el" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aacffdea3e049b0080b6fa4ac4c2fd881">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#ad5be0755605e62a9b2ca912ba0c6032e">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aacffdea3e049b0080b6fa4ac4c2fd881">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">matrix_expression< LHS, RHS, OP ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa1ab613bf0ce7b0cc370306d7425ffa2">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a>
-</li>
-<li>sparse_matrix_adapted_iterator()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a28ab748b9c7783bdf3aa8fa02203a85c">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-</li>
-<li>sparse_matrix_adapter()
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#aa97338a4e54ded964e4d45a623adbf30">sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>swap()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">handle< OCL_TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>switch_context()
-: <a class="el" href="classviennacl_1_1ocl_1_1backend.html#ab476349b4b424527038f7484c1f0097b">backend< dummy ></a>
-</li>
-<li>switch_device()
-: <a class="el" href="classviennacl_1_1ocl_1_1context.html#a3d316253d55eade417eee44bb38b127c">context</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x74.html b/doc/doxygen/html/functions_func_0x74.html
deleted file mode 100644
index a5489b8..0000000
--- a/doc/doxygen/html/functions_func_0x74.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li class="current"><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>tolerance()
-: <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html#a2e99612a88de21eaeb07e55be78a28a3">bicgstab_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html#a2e99612a88de21eaeb07e55be78a28a3">cg_tag</a>
-, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">gmres_tag</a>
-</li>
-<li>type()
-: <a class="el" href="classviennacl_1_1ocl_1_1device.html#a30cb8b6361720dfb6c7ce63d1c347e41">device</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x76.html b/doc/doxygen/html/functions_func_0x76.html
deleted file mode 100644
index f91999f..0000000
--- a/doc/doxygen/html/functions_func_0x76.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li class="current"><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>vector()
-: <a class="el" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>vector_expression()
-: <a class="el" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression< LHS, RHS, OP ></a>
-</li>
-<li>vector_iterator()
-: <a class="el" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88">vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_func_0x7e.html b/doc/doxygen/html/functions_func_0x7e.html
deleted file mode 100644
index 397ca98..0000000
--- a/doc/doxygen/html/functions_func_0x7e.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="functions_func.html#index_a"><span>a</span></a></li>
- <li><a href="functions_func_0x62.html#index_b"><span>b</span></a></li>
- <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="functions_func_0x68.html#index_h"><span>h</span></a></li>
- <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="functions_func_0x6a.html#index_j"><span>j</span></a></li>
- <li><a href="functions_func_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="functions_func_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
- <li class="current"><a href="functions_func_0x7e.html#index_~"><span>~</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
-<li>~handle()
-: <a class="el" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">handle< OCL_TYPE ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_rela.html b/doc/doxygen/html/functions_rela.html
deleted file mode 100644
index 9795029..0000000
--- a/doc/doxygen/html/functions_rela.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Related Functions</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li class="current"><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
- <ul>
-<li>copy
-: <a class="el" href="classviennacl_1_1coordinate__matrix.html#ac897302c28562b6e0fc56d2802102960">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#a16f29c7064c0aa97dfbf324336c5176a">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>enqueue
-: <a class="el" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084">kernel</a>
-</li>
-<li>fast_copy
-: <a class="el" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-</li>
-<li>kernel
-: <a class="el" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">program</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_type.html b/doc/doxygen/html/functions_type.html
deleted file mode 100644
index 945300f..0000000
--- a/doc/doxygen/html/functions_type.html
+++ /dev/null
@@ -1,178 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Typedefs</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li><a href="functions_vars.html"><span>Variables</span></a></li>
- <li class="current"><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_v"><span>v</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>const_iterator
-: <a class="el" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>const_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#aa5359de96982fcefb8902889e90cd009">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#adf83e37907ef2d594f62e4b05b9425bd">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-<li>const_reverse_iterator1
-: <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#abb7af69bf0142c0d643bc87bb93c458c">const_sparse_matrix_adapter< SCALARTYPE ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>difference_type
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>iterator
-: <a class="el" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>iterator1
-: <a class="el" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#a9aa7f7547cc95c129d669a1e1bc552d9">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a9d0cefa870abca0f769b21678543f261">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-<li>iterator2
-: <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#af9d07e03f84bf020e29667219e4c2ad8">sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#a8ecdc71bf9b89cd058304a3d484cbdea">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>ResultType
-: <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CPU_SCALAR_TYPE_DEDUCER< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CPU_SCALAR_TYPE_DEDUCER< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">VECTOR_EXTRACTOR< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< const T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>ScalarType
-: <a class="el" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">scalar_expression< LHS, RHS, OP ></a>
-</li>
-<li>size_type
-: <a class="el" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">vector< SCALARTYPE, ALIGNMENT ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>type
-: <a class="el" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">tag_of< Sequence, Active ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">enable_if< b, T ></a>
-, <a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">value_type< T ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::coordinate_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::compressed_matrix< T, I > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::matrix< T, F, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">tag_of< viennacl::vector< T, alignment > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< std::vector< T, A >, A > ></a>
-, <a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">tag_of< std::vector< T, A > ></a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value_type
-: <a class="el" href="classviennacl_1_1compressed__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">compressed_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1coordinate__matrix.html#aed985c700866b1bae61cb8bcd5d322fe">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">matrix< SCALARTYPE, F, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#ab2ccf246e378a3df6f7a4d9da121f832">const_sparse_matrix_adapter< SCALARTYPE ></a>
-, <a class="el" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">scalar< TYPE ></a>
-, <a class="el" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">vector< SCALARTYPE, ALIGNMENT ></a>
-, <a class="el" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">matrix_iterator< ROWCOL, MATRIXTYPE ></a>
-</li>
-<li>VectorType
-: <a class="el" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">vector_expression< LHS, RHS, OP ></a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/functions_vars.html b/doc/doxygen/html/functions_vars.html
deleted file mode 100644
index 45864f4..0000000
--- a/doc/doxygen/html/functions_vars.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields - Variables</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li class="current"><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="functions.html"><span>All</span></a></li>
- <li><a href="functions_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
- <li><a href="functions_type.html"><span>Typedefs</span></a></li>
- <li><a href="functions_eval.html"><span>Enumerator</span></a></li>
- <li><a href="functions_rela.html"><span>Related Functions</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
- <ul>
-<li>devices
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">parameter_database</a>
-</li>
-<li>devices_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">parameter_database</a>
-</li>
-<li>doc
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">parameter_database</a>
-</li>
-<li>elements_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>index_
-: <a class="el" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a>
-</li>
-<li>kernels
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">parameter_database</a>
-</li>
-<li>kernels_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">parameter_database</a>
-</li>
-<li>last
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">parameter_database</a>
-</li>
-<li>parameters
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameter_database</a>
-</li>
-<li>parameters_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameter_database</a>
-</li>
-<li>root
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">parameter_database</a>
-</li>
-<li>tests
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">parameter_database</a>
-</li>
-<li>tests_open
-: <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">parameter_database</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/globals.html b/doc/doxygen/html/globals.html
deleted file mode 100644
index 33e474d..0000000
--- a/doc/doxygen/html/globals.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="globals.html"><span>All</span></a></li>
- <li><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:<ul>
-<li>VIENNACL_BUG_REPORT_STRING
-: <a class="el" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">error.hpp</a>
-</li>
-<li>VIENNACL_ERR_CHECK
-: <a class="el" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">error.hpp</a>
-</li>
-<li>VIENNACL_OCL_MAX_DEVICE_NUM
-: <a class="el" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">forwards.h</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/globals_defs.html b/doc/doxygen/html/globals_defs.html
deleted file mode 100644
index 63d5efb..0000000
--- a/doc/doxygen/html/globals_defs.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li class="current"><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="globals.html"><span>All</span></a></li>
- <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
- <ul>
-<li>VIENNACL_BUG_REPORT_STRING
-: <a class="el" href="error_8hpp.html#a6d42757cdf0e944ebe5236aa4f96b6aa">error.hpp</a>
-</li>
-<li>VIENNACL_ERR_CHECK
-: <a class="el" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">error.hpp</a>
-</li>
-<li>VIENNACL_OCL_MAX_DEVICE_NUM
-: <a class="el" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">forwards.h</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/gmres_8hpp.html b/doc/doxygen/html/gmres_8hpp.html
deleted file mode 100644
index af88671..0000000
--- a/doc/doxygen/html/gmres_8hpp.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of the generalized minimum residual method are in this file.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="norm__2_8hpp_source.html">viennacl/linalg/norm_2.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="prod_8hpp_source.html">viennacl/linalg/prod.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="inner__prod_8hpp_source.html">viennacl/linalg/inner_prod.hpp</a>"</code><br/>
-
-<p><a href="gmres_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. <a href="classviennacl_1_1linalg_1_1gmres__tag.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a76b4d001b76edd2253dc7d3a2852b391">solve</a> (const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the GMRES solver. <a href="#a76b4d001b76edd2253dc7d3a2852b391"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad590c4eadb76eea1a806c3c4c026ba66">solve</a> (const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience overload of the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function using GMRES. Per default, no preconditioner is used. <a href="#ad590c4eadb76eea1a806c3c4c026ba66"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of the generalized minimum residual method are in this file. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/gmres_8hpp_source.html b/doc/doxygen/html/gmres_8hpp_source.html
deleted file mode 100644
index 6d5b158..0000000
--- a/doc/doxygen/html/gmres_8hpp_source.html
+++ /dev/null
@@ -1,295 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/gmres.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="gmres_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_GMRES_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_GMRES_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="norm__2_8hpp.html" title="Generic interface for the l^2-norm. See viennacl/linalg/vector_operations.hpp for implementations...">viennacl/linalg/norm_2.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="prod_8hpp.html" title="Generic interface for matrix-vector and matrix-matrix products. See viennacl/linalg/vector_operations...">viennacl/linalg/prod.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="inner__prod_8hpp.html" title="Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.">viennacl/linalg/inner_prod.hpp</a>"</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>viennacl
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>linalg
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034
-<a name="l00037"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html">00037</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html" title="A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the solve() func...">gmres_tag</a> <span class="comment">//generalized minimum residual</span>
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">public</span>:
-<a name="l00046"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab">00046</a> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a83b42e2a7d307fb4d23a039027904fab" title="The constructor.">gmres_tag</a>(<span class="keywordtype">double</span> tol = 1e-10, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a> = 300, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a> = 20)
-<a name="l00047"></a>00047 : _tol(tol), _iterations(<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>), _krylov_dim(<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>), iters_taken_(0) {};
-<a name="l00048"></a>00048
-<a name="l00050"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3">00050</a> <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _tol; }
-<a name="l00052"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525">00052</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ab0a4e05130e2f14ba0374b9570ae9525" title="Returns the maximum number of iterations.">max_iterations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _iterations; }
-<a name="l00054"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89">00054</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _krylov_dim; }
-<a name="l00056"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8">00056</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8" title="Returns the maximum number of GMRES restarts.">max_restarts</a>()<span class="keyword"> const</span>
-<a name="l00057"></a>00057 <span class="keyword"> </span>{
-<a name="l00058"></a>00058 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ret = _iterations / _krylov_dim;
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (ret > 0 && (ret * _krylov_dim == _iterations) )
-<a name="l00060"></a>00060 <span class="keywordflow">return</span> ret - 1;
-<a name="l00061"></a>00061 <span class="keywordflow">return</span> ret;
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063
-<a name="l00065"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9">00065</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> iters_taken_; }
-<a name="l00067"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b">00067</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a0643bc87331b97f3a90e71ec54ff205b" title="Set the number of solver iterations (should only be modified by the solver).">iters</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{ iters_taken_ = i; }
-<a name="l00068"></a>00068
-<a name="l00070"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f">00070</a> <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> last_error_; }
-<a name="l00072"></a><a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322">00072</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a086bf00d9923c3f80f62de3f8491a322" title="Sets the estimated relative error at the end of the solver run.">error</a>(<span class="keywordtype">double</span> e)<span class="keyword"> const </span>{ last_error_ = e; }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="keyword">private</span>:
-<a name="l00075"></a>00075 <span class="keywordtype">double</span> _tol;
-<a name="l00076"></a>00076 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _iterations;
-<a name="l00077"></a>00077 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _krylov_dim;
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <span class="comment">//return values from solver</span>
-<a name="l00080"></a>00080 <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> iters_taken_;
-<a name="l00081"></a>00081 <span class="keyword">mutable</span> <span class="keywordtype">double</span> last_error_;
-<a name="l00082"></a>00082 };
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keyword">namespace</span>
-<a name="l00085"></a>00085 {
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="keyword">template</span> <<span class="keyword">typename</span> SRC_VECTOR, <span class="keyword">typename</span> DEST_VECTOR>
-<a name="l00088"></a>00088 <span class="keywordtype">void</span> gmres_copy_helper(SRC_VECTOR <span class="keyword">const</span> & src, DEST_VECTOR & dest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<len; ++i)
-<a name="l00091"></a>00091 dest[i] = src[i];
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> DEST_VECTOR>
-<a name="l00095"></a>00095 <span class="keywordtype">void</span> gmres_copy_helper(<a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> <span class="keyword">const</span> & src, DEST_VECTOR & dest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
-<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>() + len, dest.begin());
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00101"></a>00101 <span class="keywordtype">void</span> gmres_copy_helper(<a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> <span class="keyword">const</span> & src, <a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> & dest, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len)
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), src.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>() + len, dest.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00118"></a>00118 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType, <span class="keyword">typename</span> PreconditionerType>
-<a name="l00119"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a76b4d001b76edd2253dc7d3a2852b391">00119</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html" title="A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the solve() func...">gmres_tag</a> <span class="keyword">const</span> & tag, PreconditionerType <span class="keyword">const</span> & precond)
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">viennacl::tools::result_of::value_type<VectorType>::type</a> ScalarType;
-<a name="l00122"></a>00122 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType</a> CPU_ScalarType;
-<a name="l00123"></a>00123 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> problem_size = <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits::size</a>(rhs);
-<a name="l00124"></a>00124 VectorType result(problem_size);
-<a name="l00125"></a>00125 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(result);
-<a name="l00126"></a>00126 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> krylov_dim = tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>();
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (problem_size < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>())
-<a name="l00128"></a>00128 krylov_dim = problem_size; <span class="comment">//A Krylov space larger than the matrix would lead to seg-faults (mathematically, error is certain to be zero already)</span>
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 VectorType res(problem_size);
-<a name="l00131"></a>00131 VectorType v_k_tilde(problem_size);
-<a name="l00132"></a>00132 VectorType v_k_tilde_temp(problem_size);
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 std::vector< std::vector<CPU_ScalarType> > R(krylov_dim);
-<a name="l00135"></a>00135 std::vector<CPU_ScalarType> projection_rhs(krylov_dim);
-<a name="l00136"></a>00136 std::vector<VectorType> U(krylov_dim);
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 <span class="keyword">const</span> CPU_ScalarType gpu_scalar_minus_1 = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(-1); <span class="comment">//representing the scalar '-1' on the GPU. Prevents blocking write operations</span>
-<a name="l00139"></a>00139 <span class="keyword">const</span> CPU_ScalarType gpu_scalar_1 = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(1); <span class="comment">//representing the scalar '1' on the GPU. Prevents blocking write operations</span>
-<a name="l00140"></a>00140 <span class="keyword">const</span> CPU_ScalarType gpu_scalar_2 = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(2); <span class="comment">//representing the scalar '2' on the GPU. Prevents blocking write operations</span>
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 CPU_ScalarType norm_rhs = <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg::norm_2</a>(rhs);
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k;
-<a name="l00145"></a>00145 <span class="keywordflow">for</span> (k = 0; k < krylov_dim; ++k)
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 R[k].resize(tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a5841d44a68cceea5176b41420649ce89" title="Returns the maximum dimension of the Krylov space before restart.">krylov_dim</a>());
-<a name="l00148"></a>00148 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits::resize</a>(U[k], problem_size);
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="comment">//std::cout << "Starting GMRES..." << std::endl;</span>
-<a name="l00152"></a>00152 tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>(0);
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> it = 0; it <= tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a16290e7b3ac1b41c490bbcf2837937a8" title="Returns the maximum number of GMRES restarts.">max_restarts</a>(); ++it)
-<a name="l00155"></a>00155 {
-<a name="l00156"></a>00156 res = rhs;
-<a name="l00157"></a>00157 res -= <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, result); <span class="comment">//initial guess zero</span>
-<a name="l00158"></a>00158 precond.apply(res);
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 CPU_ScalarType rho_0 = <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg::norm_2</a>(res);
-<a name="l00161"></a>00161 CPU_ScalarType rho = <span class="keyword">static_cast<</span>CPU_ScalarType<span class="keyword">></span>(1.0);
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keywordflow">if</span> (rho_0 / norm_rhs < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 <span class="comment">//std::cout << "Allowed Error reached at begin of loop" << std::endl;</span>
-<a name="l00166"></a>00166 tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(rho_0 / norm_rhs);
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> result;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 res /= rho_0;
-<a name="l00171"></a>00171 <span class="keywordflow">for</span> (k=0; k<krylov_dim; ++k)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(R[k]);
-<a name="l00174"></a>00174 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(U[k]);
-<a name="l00175"></a>00175 R[k].resize(krylov_dim);
-<a name="l00176"></a>00176 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits::resize</a>(U[k], problem_size);
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179 <span class="keywordflow">for</span> (k = 0; k < krylov_dim; ++k)
-<a name="l00180"></a>00180 {
-<a name="l00181"></a>00181 tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>( tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a26002e6fe73ece7e16b125d9f4e97be9" title="Return the number of solver iterations:">iters</a>() + 1 ); <span class="comment">//increase iteration counter</span>
-<a name="l00182"></a>00182
-<a name="l00183"></a>00183 <span class="comment">//compute v_k = A * v_{k-1} via Householder matrices</span>
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (k == 0)
-<a name="l00185"></a>00185 {
-<a name="l00186"></a>00186 v_k_tilde = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, res);
-<a name="l00187"></a>00187 precond.apply(v_k_tilde);
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 <span class="keywordflow">else</span>
-<a name="l00190"></a>00190 {
-<a name="l00191"></a>00191 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(v_k_tilde);
-<a name="l00192"></a>00192 v_k_tilde[k-1] = gpu_scalar_1;
-<a name="l00193"></a>00193 <span class="comment">//Householder rotations part 1</span>
-<a name="l00194"></a>00194 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = k-1; i > -1; --i)
-<a name="l00195"></a>00195 v_k_tilde -= U[i] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[i], v_k_tilde) * gpu_scalar_2);
-<a name="l00196"></a>00196
-<a name="l00197"></a>00197 v_k_tilde_temp = <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, v_k_tilde);
-<a name="l00198"></a>00198 precond.apply(v_k_tilde_temp);
-<a name="l00199"></a>00199 v_k_tilde = v_k_tilde_temp;
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="comment">//Householder rotations part 2</span>
-<a name="l00202"></a>00202 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < k; ++i)
-<a name="l00203"></a>00203 v_k_tilde -= U[i] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[i], v_k_tilde) * gpu_scalar_2);
-<a name="l00204"></a>00204 }
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits::clear</a>(U[k]);
-<a name="l00207"></a>00207 <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits::resize</a>(U[k], problem_size);
-<a name="l00208"></a>00208 <span class="comment">//copy first k entries from v_k_tilde to U[k]:</span>
-<a name="l00209"></a>00209 gmres_copy_helper(v_k_tilde, U[k], k);
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 U[k][k] = std::sqrt( <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(v_k_tilde, v_k_tilde) - <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[k], U[k]) );
-<a name="l00212"></a>00212
-<a name="l00213"></a>00213 <span class="comment">//copy first k+1 entries from U[k] to R[k]</span>
-<a name="l00214"></a>00214 gmres_copy_helper(U[k], R[k], k+1);
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 U[k] -= v_k_tilde;
-<a name="l00217"></a>00217 U[k] *= gpu_scalar_minus_1 / <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg::norm_2</a>( U[k] );
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 res -= U[k] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>( U[k], res ) * gpu_scalar_2);
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 projection_rhs[k] = res[k];
-<a name="l00222"></a>00222 rho *= std::sin( std::acos(projection_rhs[k] / rho) );
-<a name="l00223"></a>00223
-<a name="l00224"></a>00224 <span class="keywordflow">if</span> (std::fabs(rho * rho_0 / norm_rhs) < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>())
-<a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 <span class="comment">//std::cout << "Krylov space big enough" << endl;</span>
-<a name="l00227"></a>00227 tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>( std::fabs(rho*rho_0 / norm_rhs) );
-<a name="l00228"></a>00228 <span class="keywordflow">break</span>;
-<a name="l00229"></a>00229 }
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 } <span class="comment">// for k</span>
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 <span class="comment">//inplace solution of the upper triangular matrix:</span>
-<a name="l00234"></a>00234 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=k-1; i>-1; --i)
-<a name="l00235"></a>00235 {
-<a name="l00236"></a>00236 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j=i+1; j<k; ++j)
-<a name="l00237"></a>00237 <span class="comment">//temp_rhs[i] -= R[i][j] * temp_rhs[j]; //if R is not transposed</span>
-<a name="l00238"></a>00238 projection_rhs[i] -= R[j][i] * projection_rhs[j]; <span class="comment">//R is transposed</span>
-<a name="l00239"></a>00239
-<a name="l00240"></a>00240 projection_rhs[i] /= R[i][i];
-<a name="l00241"></a>00241 }
-<a name="l00242"></a>00242
-<a name="l00243"></a>00243 res *= projection_rhs[0];
-<a name="l00244"></a>00244
-<a name="l00245"></a>00245 <span class="keywordflow">if</span> (k > 0)
-<a name="l00246"></a>00246 {
-<a name="l00247"></a>00247 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < k-1; ++i)
-<a name="l00248"></a>00248 {
-<a name="l00249"></a>00249 res[i] += projection_rhs[i+1];
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = k-1; i > -1; --i)
-<a name="l00254"></a>00254 res -= U[i] * (<a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg::inner_prod</a>(U[i], res) * gpu_scalar_2);
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 res *= rho_0;
-<a name="l00257"></a>00257 result += res;
-<a name="l00258"></a>00258
-<a name="l00259"></a>00259 <span class="keywordflow">if</span> ( std::fabs(rho*rho_0 / norm_rhs) < tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#a2e99612a88de21eaeb07e55be78a28a3" title="Returns the relative tolerance.">tolerance</a>() )
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <span class="comment">//std::cout << "Allowed Error reached at end of loop" << std::endl;</span>
-<a name="l00262"></a>00262 tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::fabs(rho*rho_0 / norm_rhs));
-<a name="l00263"></a>00263 <span class="keywordflow">return</span> result;
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266 res = rhs;
-<a name="l00267"></a>00267 res -= <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">viennacl::linalg::prod</a>(matrix, result);
-<a name="l00268"></a>00268 <span class="comment">//std::cout << "norm_2(r)=" << norm_2(r) << std::endl;</span>
-<a name="l00269"></a>00269 <span class="comment">//std::cout << "std::abs(rho*rho_0)=" << std::abs(rho*rho_0) << std::endl;</span>
-<a name="l00270"></a>00270 <span class="comment">//std::cout << r << std::endl; </span>
-<a name="l00271"></a>00271
-<a name="l00272"></a>00272 tag.<a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html#ae75852c9d9bf937552ee5a1bafea818f" title="Returns the estimated relative error at the end of the solver run.">error</a>(std::fabs(rho*rho_0));
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="keywordflow">return</span> result;
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277
-<a name="l00280"></a>00280 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00281"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad590c4eadb76eea1a806c3c4c026ba66">00281</a> VectorType <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(<span class="keyword">const</span> MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorType <span class="keyword">const</span> & rhs, <a class="code" href="classviennacl_1_1linalg_1_1gmres__tag.html" title="A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the solve() func...">gmres_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00282"></a>00282 {
-<a name="l00283"></a>00283 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve</a>(matrix, rhs, tag, <a class="code" href="classviennacl_1_1linalg_1_1no__precond.html" title="A tag class representing the use of no preconditioner.">no_precond</a>());
-<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286
-<a name="l00287"></a>00287 }
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289
-<a name="l00290"></a>00290 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/handle_8hpp.html b/doc/doxygen/html/handle_8hpp.html
deleted file mode 100644
index 38833aa..0000000
--- a/doc/doxygen/html/handle_8hpp.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include <CL/cl.h></code><br/>
-<code>#include <assert.h></code><br/>
-<code>#include <string></code><br/>
-<code>#include <iostream></code><br/>
-<code>#include "<a class="el" href="error_8hpp_source.html">viennacl/ocl/error.hpp</a>"</code><br/>
-
-<p><a href="handle_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper for OpenCL reference counting used by class handle. <a href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Handle class the effectively represents a smart pointer for OpenCL handles. <a href="classviennacl_1_1ocl_1_1handle.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/handle_8hpp_source.html b/doc/doxygen/html/handle_8hpp_source.html
deleted file mode 100644
index fd51009..0000000
--- a/doc/doxygen/html/handle_8hpp_source.html
+++ /dev/null
@@ -1,214 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/handle.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="handle_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_HANDLE_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_HANDLE_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00018"></a>00018 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00019"></a>00019 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00020"></a>00020 <span class="preprocessor">#else</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#endif</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <assert.h></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <string></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <iostream></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="error_8hpp.html" title="Error handling for the OpenCL layer of ViennaCL.">viennacl/ocl/error.hpp</a>"</span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>ocl
-<a name="l00032"></a>00032 {
-<a name="l00036"></a>00036 <span class="keyword">template</span><<span class="keyword">class</span> OCL_TYPE>
-<a name="l00037"></a><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">00037</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a>
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keyword">typedef</span> <span class="keyword">typename</span> OCL_TYPE::ERROR_TEMPLATE_ARGUMENT_FOR_CLASS_INVALID ErrorType;
-<a name="l00040"></a>00040 };
-<a name="l00041"></a>00041
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="comment">//cl_mem:</span>
-<a name="l00044"></a>00044 <span class="keyword">template</span> <>
-<a name="l00045"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">00045</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_mem>
-<a name="l00046"></a>00046 {
-<a name="l00047"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">00047</a> <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_mem & something)
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 cl_int err = clRetainMemObject(something);
-<a name="l00050"></a>00050 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">00053</a> <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_mem & something)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="preprocessor"> #ifndef __APPLE__</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span> cl_int err = clReleaseMemObject(something);
-<a name="l00057"></a>00057 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00058"></a>00058 <span class="preprocessor"> #endif</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span> }
-<a name="l00060"></a>00060 };
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="comment">//cl_program:</span>
-<a name="l00063"></a>00063 <span class="keyword">template</span> <>
-<a name="l00064"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">00064</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_program>
-<a name="l00065"></a>00065 {
-<a name="l00066"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">00066</a> <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_program & something)
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 cl_int err = clRetainProgram(something);
-<a name="l00069"></a>00069 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">00072</a> <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_program & something)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="preprocessor"> #ifndef __APPLE__</span>
-<a name="l00075"></a>00075 <span class="preprocessor"></span> cl_int err = clReleaseProgram(something);
-<a name="l00076"></a>00076 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00077"></a>00077 <span class="preprocessor"> #endif</span>
-<a name="l00078"></a>00078 <span class="preprocessor"></span> }
-<a name="l00079"></a>00079 };
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081 <span class="comment">//cl_kernel:</span>
-<a name="l00082"></a>00082 <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">00083</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_kernel>
-<a name="l00084"></a>00084 {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">00085</a> <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_kernel & something)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 cl_int err = clRetainKernel(something);
-<a name="l00088"></a>00088 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00091"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">00091</a> <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_kernel & something)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="preprocessor"> #ifndef __APPLE__</span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span> cl_int err = clReleaseKernel(something);
-<a name="l00095"></a>00095 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00096"></a>00096 <span class="preprocessor"> #endif</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span> }
-<a name="l00098"></a>00098 };
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <span class="comment">//cl_command_queue:</span>
-<a name="l00101"></a>00101 <span class="keyword">template</span> <>
-<a name="l00102"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">00102</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_command_queue>
-<a name="l00103"></a>00103 {
-<a name="l00104"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">00104</a> <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_command_queue & something)
-<a name="l00105"></a>00105 {
-<a name="l00106"></a>00106 cl_int err = clRetainCommandQueue(something);
-<a name="l00107"></a>00107 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109
-<a name="l00110"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">00110</a> <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_command_queue & something)
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="preprocessor"> #ifndef __APPLE__</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span> cl_int err = clReleaseCommandQueue(something);
-<a name="l00114"></a>00114 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00115"></a>00115 <span class="preprocessor"> #endif</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span> }
-<a name="l00117"></a>00117 };
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="comment">//cl_context:</span>
-<a name="l00120"></a>00120 <span class="keyword">template</span> <>
-<a name="l00121"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">00121</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html" title="Helper for OpenCL reference counting used by class handle.">handle_inc_dec_helper</a><cl_context>
-<a name="l00122"></a>00122 {
-<a name="l00123"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">00123</a> <span class="keyword">static</span> <span class="keywordtype">void</span> inc(cl_context & something)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 cl_int err = clRetainContext(something);
-<a name="l00126"></a>00126 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128
-<a name="l00129"></a><a class="code" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">00129</a> <span class="keyword">static</span> <span class="keywordtype">void</span> dec(cl_context & something)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="preprocessor"> #ifndef __APPLE__</span>
-<a name="l00132"></a>00132 <span class="preprocessor"></span> cl_int err = clReleaseContext(something);
-<a name="l00133"></a>00133 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00134"></a>00134 <span class="preprocessor"> #endif</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span> }
-<a name="l00136"></a>00136 };
-<a name="l00137"></a>00137
-<a name="l00139"></a>00139 <span class="keyword">template</span><<span class="keyword">class</span> OCL_TYPE>
-<a name="l00140"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html">00140</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a>
-<a name="l00141"></a>00141 {
-<a name="l00142"></a>00142 <span class="keyword">public</span>:
-<a name="l00143"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">00143</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>() : something(0) {}
-<a name="l00144"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">00144</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#af4d4001df29df561a0c46de3a8b87566">handle</a>(<span class="keyword">const</span> OCL_TYPE & _something) : something(_something) {}
-<a name="l00145"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">00145</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0221469d9ed43a30b1663b0cd63ffc9d">handle</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & h) : something(h.something) { <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); }
-<a name="l00146"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">00146</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#acf40b88db4c738c2b2a7f791cf978414">~handle</a>() { <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>(); }
-<a name="l00147"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">00147</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & h)
-<a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>();
-<a name="l00150"></a>00150 something = h.something;
-<a name="l00151"></a>00151 <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>();
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#afe71aac8199101eb7e5f83a8a08e196b">00154</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html#ac8c16c2f06f9b8407963c8d5b627cd44">operator=</a>(<span class="keyword">const</span> OCL_TYPE & _something)
-<a name="l00155"></a>00155 {
-<a name="l00156"></a>00156 <span class="keywordflow">if</span> (something != 0) <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>();
-<a name="l00157"></a>00157 something = _something;
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00159"></a>00159 }
-<a name="l00160"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">00160</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a0617dee4fea8b9ca2a668b73b6814a52">operator OCL_TYPE</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> something; }
-<a name="l00161"></a>00161 <span class="comment">//const OCL_TYPE & get() const { return something; }</span>
-<a name="l00162"></a>00162
-<a name="l00164"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb">00164</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb" title="Swaps the OpenCL handle of two handle objects.">swap</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a> & other)
-<a name="l00165"></a>00165 {
-<a name="l00166"></a>00166 OCL_TYPE tmp = other.something;
-<a name="l00167"></a>00167 other.something = this->something;
-<a name="l00168"></a>00168 this->something = tmp;
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00173"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd">00173</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>() { <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">handle_inc_dec_helper<OCL_TYPE>::inc</a>(something); };
-<a name="l00175"></a><a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a">00175</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">dec</a>() { <a class="code" href="classviennacl_1_1ocl_1_1handle.html#a15ca0b744f48a3d5e7cf7151f81b587a" title="Manually decrement the OpenCL reference count. Typically called automatically, but might be useful wi...">handle_inc_dec_helper<OCL_TYPE>::dec</a>(something); };
-<a name="l00176"></a>00176 <span class="keyword">private</span>:
-<a name="l00177"></a>00177 OCL_TYPE something;
-<a name="l00178"></a>00178 };
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 } <span class="comment">//namespace ocl</span>
-<a name="l00182"></a>00182 } <span class="comment">//namespace viennacl</span>
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/hierarchy.html b/doc/doxygen/html/hierarchy.html
deleted file mode 100644
index d646843..0000000
--- a/doc/doxygen/html/hierarchy.html
+++ /dev/null
@@ -1,290 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Hierarchical Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>Class Hierarchy</h1> </div>
-</div>
-<div class="contents">
-This inheritance list is sorted roughly, but not completely, alphabetically:<ul>
-<li><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend< dummy ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></li>
-<li><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></li>
-<li><a class="el" href="structviennacl_1_1column__major.html">column_major</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></li>
-<li><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix< SCALARTYPE, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></li>
-<li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1, is_forward ></a></li>
-<li><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter< SCALARTYPE ></a><ul>
-<li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter< SCALARTYPE ></a></li>
-</ul>
-</li>
-<li><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a><ul>
-<li><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a></li>
-</ul>
-</li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></li>
-<li><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix< SCALARTYPE, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></li>
-<li><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy< SCALARTYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle< OCL_TYPE ></a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper< OCL_TYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></li>
-<li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></li>
-<li><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></li>
-<li><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></li>
-<li><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></li>
-<li><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></li>
-<li><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a></li>
-<li><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></li>
-<li><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></li>
-<li><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a></li>
-<li><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></li>
-<li><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></li>
-<li><a class="el" href="structviennacl_1_1row__major.html">row_major</a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></li>
-<li><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></li>
-<li><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></li>
-<li><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a></li>
-<li><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator< SCALARTYPE, is_iterator1 ></a></li>
-<li><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></li>
-<li><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></li>
-<li><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></li>
-<li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></li>
-<li><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></li>
-<li><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></li>
-<li><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></li>
-<li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></li>
-<li><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a></li>
-<li><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></li>
-<li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></li>
-<li><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></li>
-<li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ilu_8hpp.html b/doc/doxygen/html/ilu_8hpp.html
deleted file mode 100644
index cde1d13..0000000
--- a/doc/doxygen/html/ilu_8hpp.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of incomplete factorization preconditioners.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="ilu_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for incomplete LU factorization with threshold (ILUT). <a href="classviennacl_1_1linalg_1_1ilut__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond< MatrixType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1ilut__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">ilut_inc_row_iterator_to_row_index</a> (T &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k. <a href="#ad81c044903c3d571c5fa1354e94ce817"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8564080fc80b938370442ac4b9ba748f">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">viennacl::tools::sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k. <a href="#a8564080fc80b938370442ac4b9ba748f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a85b825153bda885996e0e2986854ab77">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">viennacl::tools::const_sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k. <a href="#a85b825153bda885996e0e2986854ab77"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename LUType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">precondition</a> (MatrixType const &input, LUType &output, ilut_tag const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a ILU-preconditioner with threshold. <a href="#aa1642cbf74be37d2ae455606506dc578"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a unit lower triangular system. <a href="#ab0726586b403c9538056414240f973eb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8160c457245b80c37acc7f3cfcc81a8f">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a upper triangular system. <a href="#a8160c457245b80c37acc7f3cfcc81a8f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">ilu_lu_substitute</a> (MatrixType const &mat, VectorType &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic LU substitution. <a href="#afe44b3505a4625dad0b551e648f3aff0"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of incomplete factorization preconditioners. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ilu_8hpp_source.html b/doc/doxygen/html/ilu_8hpp_source.html
deleted file mode 100644
index 838fc3a..0000000
--- a/doc/doxygen/html/ilu_8hpp_source.html
+++ /dev/null
@@ -1,370 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/ilu.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="ilu_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ILU_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ILU_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="preprocessor">#include <map></span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>linalg
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033
-<a name="l00036"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html">00036</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a>
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keyword">public</span>:
-<a name="l00044"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a">00044</a> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a9308c6447d14308fcfac1f83f456108a" title="The constructor.">ilut_tag</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> entries_per_row = 10,
-<a name="l00045"></a>00045 <span class="keywordtype">double</span> drop_tolerance = 1e-3) : _entries_per_row(entries_per_row), _drop_tolerance(drop_tolerance) {};
-<a name="l00046"></a>00046
-<a name="l00047"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">00047</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a146cc7a6b6e8ebb052f057416f7d356d">set_drop_tolerance</a>(<span class="keywordtype">double</span> tol)
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049 <span class="keywordflow">if</span> (tol > 0)
-<a name="l00050"></a>00050 _drop_tolerance = tol;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">00052</a> <span class="keywordtype">double</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _drop_tolerance; }
-<a name="l00053"></a>00053
-<a name="l00054"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">00054</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#af01a20f9ca9bdd5264128ef2f57b0b11">set_entries_per_row</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> e)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (e > 0)
-<a name="l00057"></a>00057 _entries_per_row = e;
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">00060</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _entries_per_row; }
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="keyword">private</span>:
-<a name="l00063"></a>00063 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _entries_per_row;
-<a name="l00064"></a>00064 <span class="keywordtype">double</span> _drop_tolerance;
-<a name="l00065"></a>00065 };
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067
-<a name="l00075"></a>00075 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00076"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">00076</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(T & row_iter, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="keywordflow">while</span> (row_iter.index1() < k)
-<a name="l00079"></a>00079 ++row_iter;
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081
-<a name="l00089"></a>00089 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00090"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a8564080fc80b938370442ac4b9ba748f">00090</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(<a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> & row_iter, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k)
-<a name="l00091"></a>00091 {
-<a name="l00092"></a>00092 row_iter += k - row_iter.index1();
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00102"></a>00102 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00103"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a85b825153bda885996e0e2986854ab77">00103</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(<a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> & row_iter, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k)
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 row_iter += k - row_iter.index1();
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108
-<a name="l00117"></a>00117 <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> LUType>
-<a name="l00118"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">00118</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578" title="Implementation of a ILU-preconditioner with threshold.">precondition</a>(MatrixType <span class="keyword">const</span> & input, LUType & output, <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> <span class="keyword">const</span> & tag)
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <span class="keyword">typedef</span> std::map<unsigned int, double> SparseVector;
-<a name="l00121"></a>00121 <span class="keyword">typedef</span> <span class="keyword">typename</span> SparseVector::iterator SparseVectorIterator;
-<a name="l00122"></a>00122 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator1 InputRowIterator; <span class="comment">//iterate along increasing row index</span>
-<a name="l00123"></a>00123 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator2 InputColIterator; <span class="comment">//iterate along increasing column index</span>
-<a name="l00124"></a>00124 <span class="keyword">typedef</span> <span class="keyword">typename</span> LUType::iterator1 OutputRowIterator; <span class="comment">//iterate along increasing row index</span>
-<a name="l00125"></a>00125 <span class="keyword">typedef</span> <span class="keyword">typename</span> LUType::iterator2 OutputColIterator; <span class="comment">//iterate along increasing column index</span>
-<a name="l00126"></a>00126
-<a name="l00127"></a>00127 output.clear();
-<a name="l00128"></a>00128 assert(input.size1() == output.size1());
-<a name="l00129"></a>00129 assert(input.size2() == output.size2());
-<a name="l00130"></a>00130 output.resize(static_cast<unsigned int>(input.size1()), static_cast<unsigned int>(input.size2()), <span class="keyword">false</span>);
-<a name="l00131"></a>00131 SparseVector w;
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 std::map<double, unsigned int> temp_map;
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="keywordflow">for</span> (InputRowIterator row_iter = input.begin1(); row_iter != input.end1(); ++row_iter)
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 <span class="comment">/* if (i%10 == 0)</span>
-<a name="l00138"></a>00138 <span class="comment"> std::cout << i << std::endl;*/</span>
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="comment">//line 2:</span>
-<a name="l00141"></a>00141 w.clear();
-<a name="l00142"></a>00142 <span class="keywordflow">for</span> (InputColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
-<a name="l00143"></a>00143 w[static_cast<unsigned int>(col_iter.index2())] = *col_iter;
-<a name="l00144"></a>00144
-<a name="l00145"></a>00145 <span class="comment">//line 3:</span>
-<a name="l00146"></a>00146 OutputRowIterator row_iter_out = output.begin1();
-<a name="l00147"></a>00147 <span class="keywordflow">for</span> (SparseVectorIterator k = w.begin(); k != w.end();)
-<a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> index_k = k->first;
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (index_k >= static_cast<unsigned int>(row_iter.index1()))
-<a name="l00151"></a>00151 <span class="keywordflow">break</span>;
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="comment">//while (row_iter_out.index1() < index_k)</span>
-<a name="l00155"></a>00155 <span class="comment">// ++row_iter_out;</span>
-<a name="l00156"></a>00156 <span class="comment">//if (row_iter_out.index1() < index_k)</span>
-<a name="l00157"></a>00157 <span class="comment">// row_iter_out += index_k - row_iter_out.index1();</span>
-<a name="l00158"></a>00158 <a class="code" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817" title="Increments a row iterator (iteration along increasing row indices) up to a certain row index k...">ilut_inc_row_iterator_to_row_index</a>(row_iter_out, index_k);
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="comment">//line 4:</span>
-<a name="l00161"></a>00161 <span class="keywordtype">double</span> temp = k->second / output(index_k, index_k);
-<a name="l00162"></a>00162 <span class="keywordflow">if</span> (output(index_k, index_k) == 0.0)
-<a name="l00163"></a>00163 {
-<a name="l00164"></a>00164 std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR in ILUT(): Diagonal entry is zero in row "</span> << index_k << <span class="stringliteral">"!"</span> << std::endl;
-<a name="l00165"></a>00165 }
-<a name="l00166"></a>00166
-<a name="l00167"></a>00167 <span class="comment">//line 5: (dropping rule to w_k)</span>
-<a name="l00168"></a>00168 <span class="keywordflow">if</span> ( fabs(temp) > tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a>())
-<a name="l00169"></a>00169 {
-<a name="l00170"></a>00170 <span class="comment">//line 7:</span>
-<a name="l00171"></a>00171 <span class="keywordflow">for</span> (OutputColIterator j = row_iter_out.begin(); j != row_iter_out.end(); ++j)
-<a name="l00172"></a>00172 {
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (j.index2() > index_k) <span class="comment">//attention: manipulation of w(k->first) would invalidate iterator!</span>
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 w[j.index2()] -= temp * *j;
-<a name="l00176"></a>00176 }
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178 ++k; <span class="comment">//attention: manipulation of w(k->first) would invalidate iterator!</span>
-<a name="l00179"></a>00179 w[index_k] = temp;<span class="comment">// - temp * A(index_k, index_k);</span>
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 <span class="keywordflow">else</span>
-<a name="l00182"></a>00182 ++k;
-<a name="l00183"></a>00183 } <span class="comment">//for k</span>
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="comment">//Line 10: Apply a dropping rule to w</span>
-<a name="l00186"></a>00186 <span class="comment">//Step 1: Sort all entries:</span>
-<a name="l00187"></a>00187 temp_map.clear();
-<a name="l00188"></a>00188 <span class="keywordflow">for</span> (SparseVectorIterator k = w.begin(); k != w.end(); )
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keywordflow">if</span> (fabs(k->second) < tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a3dca5fa27b598fea7c6db2861924965f">get_drop_tolerance</a>())
-<a name="l00191"></a>00191 {
-<a name="l00192"></a>00192 <span class="keywordtype">long</span> index = k->first;
-<a name="l00193"></a>00193 ++k;
-<a name="l00194"></a>00194 w.erase(index);
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 <span class="keywordflow">else</span>
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordtype">double</span> temp = fabs(k->second);
-<a name="l00199"></a>00199 <span class="keywordflow">while</span> (temp_map.find(temp) != temp_map.end())
-<a name="l00200"></a>00200 temp *= 1.00000001; <span class="comment">//make entry slightly larger to maintain uniqueness of the entry</span>
-<a name="l00201"></a>00201 temp_map[temp] = k->first;
-<a name="l00202"></a>00202 ++k;
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204 }
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="comment">//Lines 10-12: write the largest p values to L and U</span>
-<a name="l00207"></a>00207 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written_L = 0;
-<a name="l00208"></a>00208 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> written_U = 0;
-<a name="l00209"></a>00209 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<double, unsigned int>::reverse_iterator iter = temp_map.rbegin(); iter != temp_map.rend(); ++iter)
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (iter->second > static_cast<unsigned int>(row_iter.index1())) <span class="comment">//entry for U</span>
-<a name="l00212"></a>00212 {
-<a name="l00213"></a>00213 <span class="keywordflow">if</span> (written_U < tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a>())
-<a name="l00214"></a>00214 {
-<a name="l00215"></a>00215 output(static_cast<unsigned int>(row_iter.index1()), iter->second) = <span class="keyword">static_cast<</span>typename LUType::value_type<span class="keyword">></span>(w[iter->second]);
-<a name="l00216"></a>00216 ++written_U;
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (iter->second == static_cast<unsigned int>(row_iter.index1()))
-<a name="l00220"></a>00220 {
-<a name="l00221"></a>00221 output(iter->second, iter->second) = <span class="keyword">static_cast<</span>typename LUType::value_type<span class="keyword">></span>(w[<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(row_iter.index1())]);
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223 <span class="keywordflow">else</span> <span class="comment">//entry for L</span>
-<a name="l00224"></a>00224 {
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (written_L < tag.<a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html#a24bd151db0892082aec946d18d0599ce">get_entries_per_row</a>())
-<a name="l00226"></a>00226 {
-<a name="l00227"></a>00227 output(static_cast<unsigned int>(row_iter.index1()), iter->second) = <span class="keyword">static_cast<</span>typename LUType::value_type<span class="keyword">></span>(w[iter->second]);
-<a name="l00228"></a>00228 ++written_L;
-<a name="l00229"></a>00229 }
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231 }
-<a name="l00232"></a>00232 } <span class="comment">//for i</span>
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235
-<a name="l00241"></a>00241 <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00242"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">00242</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(MatrixType <span class="keyword">const</span> & mat, VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">viennacl::linalg::unit_lower_tag</a>)
-<a name="l00243"></a>00243 {
-<a name="l00244"></a>00244 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator1 InputRowIterator; <span class="comment">//iterate along increasing row index</span>
-<a name="l00245"></a>00245 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator2 InputColIterator; <span class="comment">//iterate along increasing column index</span>
-<a name="l00246"></a>00246
-<a name="l00247"></a>00247 <span class="keywordflow">for</span> (InputRowIterator row_iter = mat.begin1(); row_iter != mat.end1(); ++row_iter)
-<a name="l00248"></a>00248 {
-<a name="l00249"></a>00249 <span class="keywordflow">for</span> (InputColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <span class="keywordflow">if</span> (col_iter.index2() < col_iter.index1())
-<a name="l00252"></a>00252 vec[col_iter.index1()] -= *col_iter * vec[col_iter.index2()];
-<a name="l00253"></a>00253 }
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256
-<a name="l00262"></a>00262 <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00263"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a8160c457245b80c37acc7f3cfcc81a8f">00263</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(MatrixType <span class="keyword">const</span> & mat, VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">viennacl::linalg::upper_tag</a>)
-<a name="l00264"></a>00264 {
-<a name="l00265"></a>00265 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_reverse_iterator1 InputRowIterator; <span class="comment">//iterate along increasing row index</span>
-<a name="l00266"></a>00266 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::const_iterator2 InputColIterator; <span class="comment">//iterate along increasing column index</span>
-<a name="l00267"></a>00267 <span class="keyword">typedef</span> <span class="keyword">typename</span> VectorType::value_type ScalarType;
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 ScalarType diagonal_entry = 1.0;
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271 <span class="keywordflow">for</span> (InputRowIterator row_iter = mat.rbegin1(); row_iter != mat.rend1(); ++row_iter)
-<a name="l00272"></a>00272 {
-<a name="l00273"></a>00273 <span class="keywordflow">for</span> (InputColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
-<a name="l00274"></a>00274 {
-<a name="l00275"></a>00275 <span class="keywordflow">if</span> (col_iter.index2() > col_iter.index1())
-<a name="l00276"></a>00276 vec[col_iter.index1()] -= *col_iter * vec[col_iter.index2()];
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (col_iter.index2() == col_iter.index1())
-<a name="l00278"></a>00278 diagonal_entry = *col_iter;
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 vec[row_iter.index1()] /= diagonal_entry;
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283
-<a name="l00289"></a>00289 <span class="keyword">template</span><<span class="keyword">typename</span> MatrixType, <span class="keyword">typename</span> VectorType>
-<a name="l00290"></a><a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">00290</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0" title="Generic LU substitution.">ilu_lu_substitute</a>(MatrixType <span class="keyword">const</span> & mat, VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00291"></a>00291 {
-<a name="l00292"></a>00292 <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1unit__lower__tag.html" title="A tag class representing a lower triangular matrix with unit diagonal.">unit_lower_tag</a>());
-<a name="l00293"></a>00293 <a class="code" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb" title="Generic inplace solution of a unit lower triangular system.">ilu_inplace_solve</a>(mat, vec, <a class="code" href="structviennacl_1_1linalg_1_1upper__tag.html" title="A tag class representing an upper triangular matrix.">upper_tag</a>());
-<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295
-<a name="l00296"></a>00296
-<a name="l00299"></a>00299 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00300"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html">00300</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html" title="ILUT preconditioner class, can be supplied to solve()-routines.">ilut_precond</a>
-<a name="l00301"></a>00301 {
-<a name="l00302"></a>00302 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::value_type ScalarType;
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 <span class="keyword">public</span>:
-<a name="l00305"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">00305</a> <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a>(MatrixType <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> <span class="keyword">const</span> & tag) : _tag(tag), LU(mat.size1())
-<a name="l00306"></a>00306 {
-<a name="l00307"></a>00307 <span class="comment">//initialize preconditioner:</span>
-<a name="l00308"></a>00308 <span class="comment">//std::cout << "Start CPU precond" << std::endl;</span>
-<a name="l00309"></a>00309 init(mat);
-<a name="l00310"></a>00310 <span class="comment">//std::cout << "End CPU precond" << std::endl;</span>
-<a name="l00311"></a>00311 }
-<a name="l00312"></a>00312
-<a name="l00313"></a>00313 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00314"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00314</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00315"></a>00315 <span class="keyword"> </span>{
-<a name="l00316"></a>00316 <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> LU_const_adapter(LU);
-<a name="l00317"></a>00317 <a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0" title="Generic LU substitution.">viennacl::linalg::ilu_lu_substitute</a>(LU_const_adapter, vec);
-<a name="l00318"></a>00318 }
-<a name="l00319"></a>00319
-<a name="l00320"></a>00320 <span class="keyword">private</span>:
-<a name="l00321"></a>00321 <span class="keywordtype">void</span> init(MatrixType <span class="keyword">const</span> & mat)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> LU_adapter(LU);
-<a name="l00324"></a>00324 <a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578" title="Implementation of a ILU-preconditioner with threshold.">viennacl::linalg::precondition</a>(mat, LU_adapter, _tag);
-<a name="l00325"></a>00325 }
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327 ilut_tag <span class="keyword">const</span> & _tag;
-<a name="l00328"></a>00328 std::vector< std::map<unsigned int, ScalarType> > LU;
-<a name="l00329"></a>00329 };
-<a name="l00330"></a>00330
-<a name="l00331"></a>00331
-<a name="l00336"></a>00336 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00337"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">00337</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html" title="ILUT preconditioner class, can be supplied to solve()-routines.">ilut_precond</a>< <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, MAT_ALIGNMENT> >
-<a name="l00338"></a>00338 {
-<a name="l00339"></a>00339 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<ScalarType, MAT_ALIGNMENT></a> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a>;
-<a name="l00340"></a>00340
-<a name="l00341"></a>00341 <span class="keyword">public</span>:
-<a name="l00342"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a1961e282ec4851df696e3d6808d1fcbe">00342</a> <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a1961e282ec4851df696e3d6808d1fcbe">ilut_precond</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a> <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> <span class="keyword">const</span> & tag) : _tag(tag), LU(mat.size1())
-<a name="l00343"></a>00343 {
-<a name="l00344"></a>00344 <span class="comment">//initialize preconditioner:</span>
-<a name="l00345"></a>00345 <span class="comment">//std::cout << "Start GPU precond" << std::endl;</span>
-<a name="l00346"></a>00346 init(mat);
-<a name="l00347"></a>00347 <span class="comment">//std::cout << "End GPU precond" << std::endl;</span>
-<a name="l00348"></a>00348 }
-<a name="l00349"></a>00349
-<a name="l00350"></a><a class="code" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a14dbb6add8cf6b44cf240ba3020404be">00350</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1ilut__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">apply</a>(<a class="code" href="classviennacl_1_1vector.html">vector<ScalarType></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00351"></a>00351 <span class="keyword"> </span>{
-<a name="l00352"></a>00352 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(vec, temp_vec);
-<a name="l00353"></a>00353 <span class="comment">//lu_substitute(LU, vec);</span>
-<a name="l00354"></a>00354 <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> LU_const_adapter(LU);
-<a name="l00355"></a>00355 <a class="code" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0" title="Generic LU substitution.">viennacl::linalg::ilu_lu_substitute</a>(LU_const_adapter, temp_vec);
-<a name="l00356"></a>00356
-<a name="l00357"></a>00357 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(temp_vec, vec);
-<a name="l00358"></a>00358 }
-<a name="l00359"></a>00359
-<a name="l00360"></a>00360 <span class="keyword">private</span>:
-<a name="l00361"></a>00361 <span class="keywordtype">void</span> init(MatrixType <span class="keyword">const</span> & mat)
-<a name="l00362"></a>00362 {
-<a name="l00363"></a>00363 std::vector< std::map<unsigned int, ScalarType> > temp(mat.size1());
-<a name="l00364"></a>00364 <span class="comment">//std::vector< std::map<unsigned int, ScalarType> > LU_cpu(mat.size1());</span>
-<a name="l00365"></a>00365
-<a name="l00366"></a>00366 <span class="comment">//copy to cpu:</span>
-<a name="l00367"></a>00367 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(mat, temp);
-<a name="l00368"></a>00368
-<a name="l00369"></a>00369 <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> temp_adapter(temp);
-<a name="l00370"></a>00370 <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> LU_adapter(LU);
-<a name="l00371"></a>00371 <a class="code" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578" title="Implementation of a ILU-preconditioner with threshold.">viennacl::linalg::precondition</a>(temp_adapter, LU_adapter, _tag);
-<a name="l00372"></a>00372
-<a name="l00373"></a>00373 temp_vec.resize(mat.size1());
-<a name="l00374"></a>00374
-<a name="l00375"></a>00375 <span class="comment">//copy resulting preconditioner back to gpu:</span>
-<a name="l00376"></a>00376 <span class="comment">//copy(LU_cpu, LU);</span>
-<a name="l00377"></a>00377 }
-<a name="l00378"></a>00378
-<a name="l00379"></a>00379 ilut_tag <span class="keyword">const</span> & _tag;
-<a name="l00380"></a>00380 <span class="comment">//MatrixType LU;</span>
-<a name="l00381"></a>00381 std::vector< std::map<unsigned int, ScalarType> > LU;
-<a name="l00382"></a>00382 <span class="keyword">mutable</span> std::vector<ScalarType> temp_vec;
-<a name="l00383"></a>00383 };
-<a name="l00384"></a>00384
-<a name="l00385"></a>00385 }
-<a name="l00386"></a>00386 }
-<a name="l00387"></a>00387
-<a name="l00388"></a>00388
-<a name="l00389"></a>00389
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391 <span class="preprocessor">#endif</span>
-<a name="l00392"></a>00392 <span class="preprocessor"></span>
-<a name="l00393"></a>00393
-<a name="l00394"></a>00394
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/index.html b/doc/doxygen/html/index.html
deleted file mode 100644
index d20776f..0000000
--- a/doc/doxygen/html/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Source Code Documentation for ViennaCL 1.1.2</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li class="current"><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>Source Code Documentation for ViennaCL 1.1.2 </h1> </div>
-</div>
-<div class="contents">
-<h3 class="version">1.1.2 </h3><p>This is the source code documentation of ViennaCL. Detailed information about the functions in ViennaCL can be found here.</p>
-<p>For a general overview over the types and functionality provided by ViennaCL, please refer to the file doc/viennacl.pdf </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/inner__prod_8hpp.html b/doc/doxygen/html/inner__prod_8hpp.html
deleted file mode 100644
index 3aa268f..0000000
--- a/doc/doxygen/html/inner__prod_8hpp.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for the computation of inner products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="inner__prod_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT1 , typename VectorT2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT1::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a> (VectorT1 const &v1, VectorT2 const &v2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT1 >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment1, unsigned int alignment2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1348122d27efc695914431a7e9e15718">inner_prod</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > const &vector1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment2 > const &vector2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for the computation of inner products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/inner__prod_8hpp_source.html b/doc/doxygen/html/inner__prod_8hpp_source.html
deleted file mode 100644
index 78a3bcc..0000000
--- a/doc/doxygen/html/inner__prod_8hpp_source.html
+++ /dev/null
@@ -1,186 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/inner_prod.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="inner__prod_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_INNERPROD_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_INNERPROD_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00024"></a>00024
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>viennacl
-<a name="l00026"></a>00026 {
-<a name="l00027"></a>00027 <span class="comment">//</span>
-<a name="l00028"></a>00028 <span class="comment">// generic inner_prod function</span>
-<a name="l00029"></a>00029 <span class="comment">// uses tag dispatch to identify which algorithm</span>
-<a name="l00030"></a>00030 <span class="comment">// should be called </span>
-<a name="l00031"></a>00031 <span class="comment">//</span>
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>linalg
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00037"></a>00037 <span class="comment">// EIGEN</span>
-<a name="l00038"></a>00038 <span class="comment">//</span>
-<a name="l00039"></a>00039 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span> <span class="keywordtype">float</span>
-<a name="l00041"></a>00041 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(Eigen::VectorXf <span class="keyword">const</span> & v1,
-<a name="l00042"></a>00042 Eigen::VectorXf <span class="keyword">const</span> & v2)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keywordflow">return</span> v1 * v2;
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="keywordtype">double</span>
-<a name="l00048"></a>00048 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(Eigen::VectorXd <span class="keyword">const</span> & v1,
-<a name="l00049"></a>00049 Eigen::VectorXd <span class="keyword">const</span> & v2)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 <span class="keywordflow">return</span> v1 * v2;
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="preprocessor"> #else </span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00056"></a>00056 <span class="keyword">typename</span> VectorT1::RealScalar
-<a name="l00057"></a>00057 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2,
-<a name="l00058"></a>00058 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">viennacl::is_eigen</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00059"></a>00059 >::type* dummy = 0)
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="comment">//std::cout << "eigen .. " << std::endl;</span>
-<a name="l00062"></a>00062 <span class="keywordflow">return</span> v1.dot(v2);
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064 <span class="preprocessor"> #endif</span>
-<a name="l00065"></a>00065 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00066"></a>00066 <span class="preprocessor"></span>
-<a name="l00067"></a>00067 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00069"></a>00069 <span class="comment">// MTL4</span>
-<a name="l00070"></a>00070 <span class="comment">//</span>
-<a name="l00071"></a>00071 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00072"></a>00072 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00073"></a>00073 ScalarType <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(mtl::dense_vector<ScalarType> <span class="keyword">const</span> & v1,
-<a name="l00074"></a>00074 mtl::dense_vector<ScalarType> <span class="keyword">const</span> & v2)
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> mtl::dot(v1, v2);
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 <span class="preprocessor"> #else </span>
-<a name="l00079"></a>00079 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00080"></a>00080 <span class="keyword">typename</span> VectorT1::value_type
-<a name="l00081"></a>00081 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2,
-<a name="l00082"></a>00082 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">viennacl::is_mtl4</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00083"></a>00083 >::type* dummy = 0)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="comment">//std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00086"></a>00086 <span class="keywordflow">return</span> mtl::dot(v1, v2);
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088 <span class="preprocessor"> #endif</span>
-<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00090"></a>00090 <span class="preprocessor"></span>
-<a name="l00091"></a>00091 <span class="preprocessor"> #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00093"></a>00093 <span class="comment">// UBLAS</span>
-<a name="l00094"></a>00094 <span class="comment">//</span>
-<a name="l00095"></a>00095 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00096"></a>00096 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType >
-<a name="l00097"></a>00097 ScalarType
-<a name="l00098"></a>00098 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(boost::numeric::ublas::vector<ScalarType> <span class="keyword">const</span> & v1,
-<a name="l00099"></a>00099 boost::numeric::ublas::vector<ScalarType> <span class="keyword">const</span> & v2)
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00102"></a>00102 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">boost::numeric::ublas::inner_prod</a>(v1, v2);
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="preprocessor"> #else </span>
-<a name="l00105"></a>00105 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00106"></a>00106 <span class="keyword">typename</span> VectorT1::value_type
-<a name="l00107"></a>00107 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2,
-<a name="l00108"></a>00108 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00109"></a>00109 >::type* dummy = 0)
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="comment">//std::cout << "ublas .. " << std::endl;</span>
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">boost::numeric::ublas::inner_prod</a>(v1, v2);
-<a name="l00113"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">00113</a> }
-<a name="l00114"></a>00114 <span class="preprocessor"> #endif</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>
-<a name="l00117"></a>00117 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00118"></a>00118 <span class="comment">// STL</span>
-<a name="l00119"></a>00119 <span class="comment">//</span>
-<a name="l00120"></a>00120 <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT1, <span class="keyword">typename</span> VectorT2 >
-<a name="l00121"></a>00121 <span class="keyword">typename</span> VectorT1::value_type
-<a name="l00122"></a>00122 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(VectorT1 <span class="keyword">const</span>& v1, VectorT2 <span class="keyword">const</span>& v2,
-<a name="l00123"></a>00123 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT1 >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00124"></a>00124 >::type* dummy = 0)
-<a name="l00125"></a>00125 {
-<a name="l00126"></a>00126 assert(v1.size() == v2.size());
-<a name="l00127"></a>00127 <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00128"></a>00128 <span class="keyword">typename</span> VectorT1::value_type result = 0;
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT1::size_type i=0; i<v1.size(); ++i)
-<a name="l00130"></a>00130 result += v1[i] * v2[i];
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> result;
-<a name="l00133"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1348122d27efc695914431a7e9e15718">00133</a> }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00136"></a>00136 <span class="comment">// VIENNACL</span>
-<a name="l00137"></a>00137 <span class="comment">//</span>
-<a name="l00138"></a>00138 <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment2 >
-<a name="l00139"></a>00139 <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment1></a>,
-<a name="l00140"></a>00140 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment2></a>,
-<a name="l00141"></a>00141 viennacl::op_inner_prod >
-<a name="l00142"></a>00142 <a class="code" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment1></a> <span class="keyword">const</span> & vector1, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment2></a> <span class="keyword">const</span> & vector2,
-<a name="l00143"></a>00143 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment1></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00144"></a>00144 >::type* dummy = 0)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="comment">//std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00147"></a>00147 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">viennacl::linalg::inner_prod_impl</a>(vector1, vector2);
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 } <span class="comment">// end namespace linalg</span>
-<a name="l00150"></a>00150 } <span class="comment">// end namespace viennacl</span>
-<a name="l00151"></a>00151 <span class="preprocessor">#endif</span>
-<a name="l00152"></a>00152 <span class="preprocessor"></span>
-<a name="l00153"></a>00153
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/jacobi__precond_8hpp.html b/doc/doxygen/html/jacobi__precond_8hpp.html
deleted file mode 100644
index c7d8dae..0000000
--- a/doc/doxygen/html/jacobi__precond_8hpp.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a simple Jacobi preconditioner.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix_8hpp_source.html">viennacl/compressed_matrix.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="jacobi__precond_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a jacobi preconditioner. <a href="classviennacl_1_1linalg_1_1jacobi__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond< MatrixType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1jacobi__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a simple Jacobi preconditioner. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/jacobi__precond_8hpp_source.html b/doc/doxygen/html/jacobi__precond_8hpp_source.html
deleted file mode 100644
index baf51e8..0000000
--- a/doc/doxygen/html/jacobi__precond_8hpp_source.html
+++ /dev/null
@@ -1,202 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/jacobi_precond.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="jacobi__precond_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_JACOBI_PRECOND_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_JACOBI_PRECOND_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="compressed__matrix_8hpp.html" title="Implementation of the compressed_matrix class.">viennacl/compressed_matrix.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00038"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html">00038</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html" title="A tag for a jacobi preconditioner.">jacobi_tag</a> {};
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040
-<a name="l00043"></a>00043 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00044"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html">00044</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">jacobi_precond</a>
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::value_type ScalarType;
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keyword">public</span>:
-<a name="l00049"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">00049</a> <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a>(MatrixType <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html" title="A tag for a jacobi preconditioner.">jacobi_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 assert(mat.size1() == mat.size2());
-<a name="l00052"></a>00052 diag_A_inv.resize(mat.size1()); <span class="comment">//resize without preserving values</span>
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = system_matrix.begin1();
-<a name="l00055"></a>00055 row_it != system_matrix.end1();
-<a name="l00056"></a>00056 ++row_it)
-<a name="l00057"></a>00057 {
-<a name="l00058"></a>00058 <span class="keywordtype">bool</span> diag_found = <span class="keyword">false</span>;
-<a name="l00059"></a>00059 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00060"></a>00060 col_it != row_it.end();
-<a name="l00061"></a>00061 ++col_it)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (col_it.index1() == col_it.index2())
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 diag_A_inv[col_it.index1()] = <span class="keyword">static_cast<</span>ScalarType<span class="keyword">></span>(1.0) / *col_it;
-<a name="l00066"></a>00066 diag_found = <span class="keyword">true</span>;
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (!diag_found)
-<a name="l00070"></a>00070 <span class="keywordflow">throw</span> <span class="stringliteral">"ViennaCL: Zero in diagonal encountered while setting up Jacobi preconditioner!"</span>;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074
-<a name="l00076"></a>00076 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00077"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00077</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),.">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00078"></a>00078 <span class="keyword"> </span>{
-<a name="l00079"></a>00079 assert(vec.size() == diag_A_inv.size());
-<a name="l00080"></a>00080 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<vec.size(); ++i)
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 vec[i] *= diag_A_inv[i];
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">private</span>:
-<a name="l00087"></a>00087 MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00088"></a>00088 std::vector<ScalarType> diag_A_inv;
-<a name="l00089"></a>00089 };
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091
-<a name="l00096"></a>00096 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00097"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">00097</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">jacobi_precond</a>< <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, MAT_ALIGNMENT> >
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<ScalarType, MAT_ALIGNMENT></a> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a>;
-<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="keyword">public</span>:
-<a name="l00102"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a784aceacd83c8ffda5a601bbf332b7b3">00102</a> <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a784aceacd83c8ffda5a601bbf332b7b3">jacobi_precond</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a> <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1jacobi__tag.html" title="A tag for a jacobi preconditioner.">jacobi_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat), diag_A_inv(mat.size1())
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 init_gpu();
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="comment">/*void init_cpu()</span>
-<a name="l00110"></a>00110 <span class="comment"> {</span>
-<a name="l00111"></a>00111 <span class="comment"> </span>
-<a name="l00112"></a>00112 <span class="comment"> std::vector< std::map<unsigned int, ScalarType> > cpu_check;</span>
-<a name="l00113"></a>00113 <span class="comment"> std::vector<ScalarType> diag_A_inv_cpu(system_matrix.size1());</span>
-<a name="l00114"></a>00114 <span class="comment"> </span>
-<a name="l00115"></a>00115 <span class="comment"> copy(system_matrix, cpu_check);</span>
-<a name="l00116"></a>00116 <span class="comment"> viennacl::tools::const_sparse_matrix_adapter<ScalarType> cpu_check_adapter(cpu_check);</span>
-<a name="l00117"></a>00117 <span class="comment"> </span>
-<a name="l00118"></a>00118 <span class="comment"> for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator1 row_it = cpu_check_adapter.begin1();</span>
-<a name="l00119"></a>00119 <span class="comment"> row_it != cpu_check_adapter.end1();</span>
-<a name="l00120"></a>00120 <span class="comment"> ++row_it)</span>
-<a name="l00121"></a>00121 <span class="comment"> {</span>
-<a name="l00122"></a>00122 <span class="comment"> bool diag_found = false;</span>
-<a name="l00123"></a>00123 <span class="comment"> for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator2 col_it = row_it.begin();</span>
-<a name="l00124"></a>00124 <span class="comment"> col_it != row_it.end();</span>
-<a name="l00125"></a>00125 <span class="comment"> ++col_it)</span>
-<a name="l00126"></a>00126 <span class="comment"> {</span>
-<a name="l00127"></a>00127 <span class="comment"> if (col_it.index1() == col_it.index2())</span>
-<a name="l00128"></a>00128 <span class="comment"> {</span>
-<a name="l00129"></a>00129 <span class="comment"> diag_found = true;</span>
-<a name="l00130"></a>00130 <span class="comment"> diag_A_inv_cpu[col_it.index1()] = static_cast<ScalarType>(1.0) / *col_it;</span>
-<a name="l00131"></a>00131 <span class="comment"> }</span>
-<a name="l00132"></a>00132 <span class="comment"> }</span>
-<a name="l00133"></a>00133 <span class="comment"> if (!diag_found)</span>
-<a name="l00134"></a>00134 <span class="comment"> throw "ViennaCL: Zero in diagonal encountered while setting up Jacobi preconditioner!";</span>
-<a name="l00135"></a>00135 <span class="comment"> }</span>
-<a name="l00136"></a>00136 <span class="comment"> </span>
-<a name="l00137"></a>00137 <span class="comment"> diag_A_inv.resize(system_matrix.size1(), false);</span>
-<a name="l00138"></a>00138 <span class="comment"> viennacl::fast_copy(diag_A_inv_cpu, diag_A_inv);</span>
-<a name="l00139"></a>00139 <span class="comment"> }*/</span>
-<a name="l00140"></a>00140
-<a name="l00141"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">00141</a> <span class="keywordtype">void</span> init_gpu()
-<a name="l00142"></a>00142 {
-<a name="l00143"></a>00143 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(
-<a name="l00144"></a>00144 viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
-<a name="l00145"></a>00145 <span class="stringliteral">"jacobi_precond"</span>);
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(),
-<a name="l00148"></a>00148 diag_A_inv, <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(diag_A_inv.size())) );
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00153"></a><a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">00153</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1jacobi__precond.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. jacobi applied vec (right hand side),.">apply</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00154"></a>00154 <span class="keyword"> </span>{
-<a name="l00155"></a>00155 assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="comment">//run kernel:</span>
-<a name="l00158"></a>00158 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
-<a name="l00159"></a>00159 <span class="stringliteral">"diag_precond"</span>);
-<a name="l00160"></a>00160
-<a name="l00161"></a>00161 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(diag_A_inv, vec, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())) );
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="keyword">private</span>:
-<a name="l00165"></a>00165 MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00166"></a>00166 <a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> diag_A_inv;
-<a name="l00167"></a>00167 };
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="preprocessor">#endif</span>
-<a name="l00176"></a>00176 <span class="preprocessor"></span>
-<a name="l00177"></a>00177
-<a name="l00178"></a>00178
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel_8hpp.html b/doc/doxygen/html/kernel_8hpp.html
deleted file mode 100644
index 845357e..0000000
--- a/doc/doxygen/html/kernel_8hpp.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Representation of an OpenCL kernel in ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="program_8hpp_source.html">viennacl/ocl/program.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="local__mem_8hpp_source.html">viennacl/ocl/local_mem.hpp</a>"</code><br/>
-
-<p><a href="kernel_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents an OpenCL kernel within ViennaCL. <a href="classviennacl_1_1ocl_1_1kernel.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Representation of an OpenCL kernel in ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel_8hpp_source.html b/doc/doxygen/html/kernel_8hpp_source.html
deleted file mode 100644
index 9a7d415..0000000
--- a/doc/doxygen/html/kernel_8hpp_source.html
+++ /dev/null
@@ -1,438 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/kernel.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="kernel_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_KERNEL_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_KERNEL_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="program_8hpp.html" title="Implements an OpenCL program class for ViennaCL.">viennacl/ocl/program.hpp</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="local__mem_8hpp.html" title="A local (shared) memory object for OpenCL.">viennacl/ocl/local_mem.hpp</a>"</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>viennacl
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="keyword">namespace </span>ocl
-<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039
-<a name="l00041"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html">00041</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a>
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00044"></a>00044 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k, <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> <span class="keyword">const</span> & queue);
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="keyword">public</span>:
-<a name="l00048"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">00048</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>() : handle_(0)
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00051"></a>00051 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Creating kernel object (default CTOR)"</span> << std::endl;
-<a name="l00052"></a>00052 <span class="preprocessor"> #endif</span>
-<a name="l00053"></a>00053 <span class="preprocessor"></span> set_work_size_defaults();
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055
-<a name="l00056"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aa94d7fe68805226e64d2b3b787f4a22c">00056</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> <span class="keyword">const</span> & prog, std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">name</a>)
-<a name="l00057"></a>00057 : handle_(0), program_(prog), name_(name), init_done_(false)
-<a name="l00058"></a>00058 {
-<a name="l00059"></a>00059 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00060"></a>00060 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Creating kernel object (full CTOR)"</span> << std::endl;
-<a name="l00061"></a>00061 <span class="preprocessor"> #endif</span>
-<a name="l00062"></a>00062 <span class="preprocessor"></span> set_work_size_defaults();
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064
-<a name="l00065"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a8f86f09c238ce42f8659fb979ff760d4">00065</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aba1fe4cfaebf9576484944be905ea7de">kernel</a>(<a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> <span class="keyword">const</span> & other)
-<a name="l00066"></a>00066 : handle_(other.handle_), program_(other.program_), name_(other.name_), init_done_(other.init_done_)
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Creating kernel object (Copy CTOR)"</span> << std::endl;
-<a name="l00070"></a>00070 <span class="preprocessor"> #endif</span>
-<a name="l00071"></a>00071 <span class="preprocessor"></span> local_work_size_[0] = other.local_work_size_[0];
-<a name="l00072"></a>00072 local_work_size_[1] = other.local_work_size_[1];
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 global_work_size_[0] = other.global_work_size_[0];
-<a name="l00075"></a>00075 global_work_size_[1] = other.global_work_size_[1];
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00078"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">00078</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a83a54825c25a4ec0cbe40577a24beb6c">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & other)
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00081"></a>00081 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Assigning kernel object"</span> << std::endl;
-<a name="l00082"></a>00082 <span class="preprocessor"> #endif</span>
-<a name="l00083"></a>00083 <span class="preprocessor"></span> handle_ = other.handle_;
-<a name="l00084"></a>00084 program_ = other.program_;
-<a name="l00085"></a>00085 name_ = other.name_;
-<a name="l00086"></a>00086 init_done_ = other.init_done_;
-<a name="l00087"></a>00087 local_work_size_[0] = other.local_work_size_[0];
-<a name="l00088"></a>00088 local_work_size_[1] = other.local_work_size_[1];
-<a name="l00089"></a>00089 global_work_size_[0] = other.global_work_size_[0];
-<a name="l00090"></a>00090 global_work_size_[1] = other.global_work_size_[1];
-<a name="l00091"></a>00091 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00096"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4">00096</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, cl_uint val)
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 init();
-<a name="l00099"></a>00099 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00100"></a>00100 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting unsigned long kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00101"></a>00101 <span class="preprocessor"> #endif</span>
-<a name="l00102"></a>00102 <span class="preprocessor"></span> cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(cl_uint), (<span class="keywordtype">void</span>*)&val);
-<a name="l00103"></a>00103 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105
-<a name="l00107"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ac351d86fb389dfefbeae8d04db8b0152">00107</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <span class="keywordtype">float</span> val)
-<a name="l00108"></a>00108 {
-<a name="l00109"></a>00109 init();
-<a name="l00110"></a>00110 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00111"></a>00111 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting floating point kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00112"></a>00112 <span class="preprocessor"> #endif</span>
-<a name="l00113"></a>00113 <span class="preprocessor"></span> cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>), (<span class="keywordtype">void</span>*)&val);
-<a name="l00114"></a>00114 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116
-<a name="l00118"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a1f56b7116c68148a7e86755b24313505">00118</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <span class="keywordtype">double</span> val)
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 init();
-<a name="l00121"></a>00121 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00122"></a>00122 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting double precision kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00123"></a>00123 <span class="preprocessor"> #endif</span>
-<a name="l00124"></a>00124 <span class="preprocessor"></span> cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(<span class="keywordtype">double</span>), (<span class="keywordtype">void</span>*)&val);
-<a name="l00125"></a>00125 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <span class="comment">//generic handling: call .handle() member</span>
-<a name="l00130"></a>00130 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> VCL_TYPE>
-<a name="l00131"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a90696210593c8b051b5a6b37db5bd1a9">00131</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, VCL_TYPE <span class="keyword">const</span> & val)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 init();
-<a name="l00134"></a>00134 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting generic kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00136"></a>00136 <span class="preprocessor"> #endif</span>
-<a name="l00137"></a>00137 <span class="preprocessor"></span> cl_mem temp = val.handle();
-<a name="l00138"></a>00138 cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(cl_mem), (<span class="keywordtype">void</span>*)&temp);
-<a name="l00139"></a>00139 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="comment">//forward handles directly:</span>
-<a name="l00144"></a>00144 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> CL_TYPE>
-<a name="l00145"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a5aeba814c640a29582cb4ae3ee769292">00145</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">viennacl::ocl::handle<CL_TYPE></a> <span class="keyword">const</span> & h)
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="comment">//arg(pos, h);</span>
-<a name="l00148"></a>00148 init();
-<a name="l00149"></a>00149 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00150"></a>00150 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting handle kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00151"></a>00151 <span class="preprocessor"> #endif</span>
-<a name="l00152"></a>00152 <span class="preprocessor"></span> CL_TYPE temp = h;
-<a name="l00153"></a>00153 cl_int err = clSetKernelArg(handle_, pos, <span class="keyword">sizeof</span>(CL_TYPE), (<span class="keywordtype">void</span>*)&temp);
-<a name="l00154"></a>00154 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="comment">//local buffer argument:</span>
-<a name="l00160"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aa786f8f9956c7e96f51870757e223511">00160</a> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">local_mem</a> & mem)
-<a name="l00161"></a>00161 {
-<a name="l00162"></a>00162 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = mem.<a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns size in bytes.">size</a>();
-<a name="l00163"></a>00163 init();
-<a name="l00164"></a>00164 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00165"></a>00165 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting local memory kernel argument at pos "</span> << pos << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00166"></a>00166 <span class="preprocessor"> #endif</span>
-<a name="l00167"></a>00167 <span class="preprocessor"></span> cl_int err = clSetKernelArg(handle_, pos, size, 0);
-<a name="l00168"></a>00168 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172
-<a name="l00174"></a>00174 <span class="keyword">template</span> <<span class="keyword">typename</span> T0>
-<a name="l00175"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e">00175</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0);
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00179"></a>00179 }
-<a name="l00180"></a>00180
-<a name="l00182"></a>00182 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1>
-<a name="l00183"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae34b738195a646694d04164a4197ab9a">00183</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1)
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1);
-<a name="l00186"></a>00186 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188
-<a name="l00190"></a>00190 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00191"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aaa45f3bb4fdbd76ed38194c5519db49c">00191</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2)
-<a name="l00192"></a>00192 {
-<a name="l00193"></a>00193 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2);
-<a name="l00194"></a>00194 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196
-<a name="l00198"></a>00198 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3>
-<a name="l00199"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a60905cb2b6bc0d97fbab6f92cac9b018">00199</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3)
-<a name="l00200"></a>00200 {
-<a name="l00201"></a>00201 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3);
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204
-<a name="l00206"></a>00206 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4>
-<a name="l00207"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a17608b63381196929a0b6a2cb5de5422">00207</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4)
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4);
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00214"></a>00214 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5>
-<a name="l00215"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ad58fe9599d149db3ae8aba9237069438">00215</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5)
-<a name="l00216"></a>00216 {
-<a name="l00217"></a>00217 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00218"></a>00218 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00219"></a>00219 }
-<a name="l00220"></a>00220
-<a name="l00222"></a>00222 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6>
-<a name="l00223"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a8be19d50cd6d9ed66bf2b89a4166ee67">00223</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6)
-<a name="l00224"></a>00224 {
-<a name="l00225"></a>00225 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6);
-<a name="l00226"></a>00226 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228
-<a name="l00230"></a>00230 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7>
-<a name="l00231"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a77fdda461fb386657622e1946b5dce51">00231</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7)
-<a name="l00232"></a>00232 {
-<a name="l00233"></a>00233 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7);
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a>00236
-<a name="l00238"></a>00238 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8>
-<a name="l00239"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a7fd3a21c0e6a24ed15cb7450be4282a3">00239</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8)
-<a name="l00240"></a>00240 {
-<a name="l00241"></a>00241 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8);
-<a name="l00242"></a>00242 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244
-<a name="l00246"></a>00246 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4,
-<a name="l00247"></a>00247 <span class="keyword">typename</span> T5, <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9>
-<a name="l00248"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a919003007befe589d506987dcd582f1b">00248</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4,
-<a name="l00249"></a>00249 T5 <span class="keyword">const</span> & t5, T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9)
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9);
-<a name="l00252"></a>00252 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00253"></a>00253 }
-<a name="l00254"></a>00254
-<a name="l00256"></a>00256 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00257"></a>00257 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10>
-<a name="l00258"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a9b68e0eccb978b1f7ced31b5da87d261">00258</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00259"></a>00259 T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10)
-<a name="l00260"></a>00260 {
-<a name="l00261"></a>00261 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10);
-<a name="l00262"></a>00262 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264
-<a name="l00266"></a>00266 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00267"></a>00267 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11>
-<a name="l00268"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#af0e290a2eba1f9bf7c0a6bed69915487">00268</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00269"></a>00269 T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11)
-<a name="l00270"></a>00270 {
-<a name="l00271"></a>00271 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00272"></a>00272 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00273"></a>00273 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275
-<a name="l00277"></a>00277 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00278"></a>00278 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11, <span class="keyword">typename</span> T12>
-<a name="l00279"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a61fe96ea3962a5b653b653cd0fb40418">00279</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00280"></a>00280 T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11, T12 <span class="keyword">const</span> & t12)
-<a name="l00281"></a>00281 {
-<a name="l00282"></a>00282 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00283"></a>00283 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12);
-<a name="l00284"></a>00284 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00285"></a>00285 }
-<a name="l00286"></a>00286
-<a name="l00288"></a>00288 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00289"></a>00289 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00290"></a>00290 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13>
-<a name="l00291"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ace68dfdccfd9c93c87346e160f74739c">00291</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00292"></a>00292 T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00293"></a>00293 T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13)
-<a name="l00294"></a>00294 {
-<a name="l00295"></a>00295 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00296"></a>00296 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00297"></a>00297 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13);
-<a name="l00298"></a>00298 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00299"></a>00299 }
-<a name="l00300"></a>00300
-<a name="l00302"></a>00302 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00303"></a>00303 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00304"></a>00304 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13, <span class="keyword">typename</span> T14>
-<a name="l00305"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ac3b17a7168f092a0839a5d2cbb9210e6">00305</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00306"></a>00306 T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00307"></a>00307 T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13, T14 <span class="keyword">const</span> & t14)
-<a name="l00308"></a>00308 {
-<a name="l00309"></a>00309 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00310"></a>00310 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00311"></a>00311 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(14, t14);
-<a name="l00312"></a>00312 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00313"></a>00313 }
-<a name="l00314"></a>00314
-<a name="l00316"></a>00316 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00317"></a>00317 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00318"></a>00318 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13, <span class="keyword">typename</span> T14, <span class="keyword">typename</span> T15>
-<a name="l00319"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#aec21f3c9f68d5d81dacd7ec8a19048ab">00319</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00320"></a>00320 T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00321"></a>00321 T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13, T14 <span class="keyword">const</span> & t14, T15 <span class="keyword">const</span> & t15)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00324"></a>00324 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00325"></a>00325 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(14, t14); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(15, t15);
-<a name="l00326"></a>00326 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328
-<a name="l00330"></a>00330 <span class="keyword">template</span> <<span class="keyword">typename</span> T0, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> T3, <span class="keyword">typename</span> T4, <span class="keyword">typename</span> T5,
-<a name="l00331"></a>00331 <span class="keyword">typename</span> T6, <span class="keyword">typename</span> T7, <span class="keyword">typename</span> T8, <span class="keyword">typename</span> T9, <span class="keyword">typename</span> T10, <span class="keyword">typename</span> T11,
-<a name="l00332"></a>00332 <span class="keyword">typename</span> T12, <span class="keyword">typename</span> T13, <span class="keyword">typename</span> T14, <span class="keyword">typename</span> T15, <span class="keyword">typename</span> T16>
-<a name="l00333"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a37e62106dc02656ef6602ddc6c28feb9">00333</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a113a2629c9614e64ce525143422de15e" title="Convenience function for setting one kernel parameter.">operator()</a>(T0 <span class="keyword">const</span> & t0, T1 <span class="keyword">const</span> & t1, T2 <span class="keyword">const</span> & t2, T3 <span class="keyword">const</span> & t3, T4 <span class="keyword">const</span> & t4, T5 <span class="keyword">const</span> & t5,
-<a name="l00334"></a>00334 T6 <span class="keyword">const</span> & t6, T7 <span class="keyword">const</span> & t7, T8 <span class="keyword">const</span> & t8, T9 <span class="keyword">const</span> & t9, T10 <span class="keyword">const</span> & t10, T11 <span class="keyword">const</span> & t11,
-<a name="l00335"></a>00335 T12 <span class="keyword">const</span> & t12, T13 <span class="keyword">const</span> & t13, T14 <span class="keyword">const</span> & t14, T15 <span class="keyword">const</span> & t15, T16 <span class="keyword">const</span> & t16)
-<a name="l00336"></a>00336 {
-<a name="l00337"></a>00337 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(0, t0); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(1, t1); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(2, t2); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(3, t3); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(4, t4); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(5, t5);
-<a name="l00338"></a>00338 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(6, t6); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(7, t7); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(8, t8); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(9, t9); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(10, t10); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(11, t11);
-<a name="l00339"></a>00339 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(12, t12); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(13, t13); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(14, t14); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(15, t15); <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#ae9941fe07b41500ced66b15c3b829ee4" title="Sets an unsigned integer argument at the provided position.">arg</a>(16, t16);
-<a name="l00340"></a>00340 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00341"></a>00341 }
-<a name="l00342"></a>00342
-<a name="l00347"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9">00347</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(<span class="keywordtype">int</span> index = 0)<span class="keyword"> const</span>
-<a name="l00348"></a>00348 <span class="keyword"> </span>{
-<a name="l00349"></a>00349 assert(index == 0 || index == 1);
-<a name="l00350"></a>00350 <span class="keywordflow">return</span> local_work_size_[index];
-<a name="l00351"></a>00351 }
-<a name="l00356"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456">00356</a> <span class="keywordtype">size_t</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(<span class="keywordtype">int</span> index = 0)<span class="keyword"> const</span>
-<a name="l00357"></a>00357 <span class="keyword"> </span>{
-<a name="l00358"></a>00358 assert(index == 0 || index == 1);
-<a name="l00359"></a>00359 <span class="keywordflow">return</span> global_work_size_[index];
-<a name="l00360"></a>00360 }
-<a name="l00361"></a>00361
-<a name="l00367"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#af38f6ba2df03771a43aacc275b64fc1c">00367</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">size_t</span> s)
-<a name="l00368"></a>00368 {
-<a name="l00369"></a>00369 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00370"></a>00370 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting local work size to "</span> << s << <span class="stringliteral">" at index "</span> << index << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00371"></a>00371 <span class="preprocessor"> #endif</span>
-<a name="l00372"></a>00372 <span class="preprocessor"></span> assert(index == 0 || index == 1);
-<a name="l00373"></a>00373 local_work_size_[index] = s;
-<a name="l00374"></a>00374 }
-<a name="l00380"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#adcacd23410973277cfb37fc98c93ebec">00380</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(<span class="keywordtype">int</span> index, <span class="keywordtype">size_t</span> s)
-<a name="l00381"></a>00381 {
-<a name="l00382"></a>00382 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00383"></a>00383 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Setting global work size to "</span> << s << <span class="stringliteral">" at index "</span> << index << <span class="stringliteral">" for kernel "</span> << name_ << std::endl;
-<a name="l00384"></a>00384 <span class="preprocessor"> #endif</span>
-<a name="l00385"></a>00385 <span class="preprocessor"></span> assert(index == 0 || index == 1);
-<a name="l00386"></a>00386 global_work_size_[index] = s;
-<a name="l00387"></a>00387 }
-<a name="l00388"></a>00388
-<a name="l00389"></a><a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">00389</a> std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a836b9d82daf374fab15aac8c87eb1133">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name_; }
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391 <span class="keyword">private</span>:
-<a name="l00392"></a>00392 <span class="keywordtype">void</span> create_kernel()
-<a name="l00393"></a>00393 {
-<a name="l00394"></a>00394 cl_int err;
-<a name="l00395"></a>00395 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00396"></a>00396 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Building kernel "</span> << name_ << std::endl;
-<a name="l00397"></a>00397 <span class="preprocessor"> #endif</span>
-<a name="l00398"></a>00398 <span class="preprocessor"></span> handle_ = clCreateKernel(program_, name_.c_str(), &err);
-<a name="l00399"></a>00399
-<a name="l00400"></a>00400 <span class="keywordflow">if</span> (err != CL_SUCCESS)
-<a name="l00401"></a>00401 {
-<a name="l00402"></a>00402 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)</span>
-<a name="l00403"></a>00403 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Could not build kernel '"</span> << name_ << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00404"></a>00404 <span class="preprocessor"> #endif</span>
-<a name="l00405"></a>00405 <span class="preprocessor"></span> std::cerr << <span class="stringliteral">"Could not build kernel '"</span> << name_ << <span class="stringliteral">"'."</span> << std::endl;
-<a name="l00406"></a>00406 }
-<a name="l00407"></a>00407 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00408"></a>00408 }
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410 <span class="keywordtype">void</span> set_work_size_defaults()
-<a name="l00411"></a>00411 {
-<a name="l00412"></a>00412 <span class="keywordflow">if</span> (<a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().type() == CL_DEVICE_TYPE_GPU)
-<a name="l00413"></a>00413 {
-<a name="l00414"></a>00414 local_work_size_[0] = 128; local_work_size_[1] = 0;
-<a name="l00415"></a>00415 global_work_size_[0] = 128*128; global_work_size_[1] = 0;
-<a name="l00416"></a>00416 }
-<a name="l00417"></a>00417 <span class="keywordflow">else</span> <span class="comment">//assume CPU type:</span>
-<a name="l00418"></a>00418 {
-<a name="l00419"></a>00419 <span class="comment">//conservative assumption: one thread per CPU core:</span>
-<a name="l00420"></a>00420 local_work_size_[0] = 1; local_work_size_[1] = 0;
-<a name="l00421"></a>00421 global_work_size_[0] = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#ab2a44bd7f2d691fa15460928af757d99" title="Returns the number of compute units on the device.">max_compute_units</a>(); global_work_size_[1] = 0;
-<a name="l00422"></a>00422 }
-<a name="l00423"></a>00423 }
-<a name="l00424"></a>00424
-<a name="l00425"></a>00425 <span class="keywordtype">void</span> init()
-<a name="l00426"></a>00426 {
-<a name="l00427"></a>00427 <span class="keywordflow">if</span> (!init_done_)
-<a name="l00428"></a>00428 {
-<a name="l00429"></a>00429 create_kernel();
-<a name="l00430"></a>00430 init_done_ = <span class="keyword">true</span>;
-<a name="l00431"></a>00431 }
-<a name="l00432"></a>00432 }
-<a name="l00433"></a>00433
-<a name="l00434"></a>00434 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_kernel></a> <span class="keyword">const</span> & handle()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> handle_; }
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_kernel></a> handle_;
-<a name="l00437"></a>00437 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> program_;
-<a name="l00438"></a>00438 std::string name_;
-<a name="l00439"></a>00439 <span class="keywordtype">bool</span> init_done_;
-<a name="l00440"></a>00440 <span class="keywordtype">size_t</span> local_work_size_[2];
-<a name="l00441"></a>00441 <span class="keywordtype">size_t</span> global_work_size_[2];
-<a name="l00442"></a>00442 };
-<a name="l00443"></a>00443
-<a name="l00444"></a>00444 } <span class="comment">//namespace ocl</span>
-<a name="l00445"></a>00445 } <span class="comment">//namespace viennacl</span>
-<a name="l00446"></a>00446
-<a name="l00447"></a>00447 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel__parameters_8hpp.html b/doc/doxygen/html/kernel__parameters_8hpp.html
deleted file mode 100644
index fe711d5..0000000
--- a/doc/doxygen/html/kernel__parameters_8hpp.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>This file holds the code necessary for reading kernel parameters from XML files using pugixml.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "pugixml/src/pugixml.hpp"</code><br/>
-
-<p><a href="kernel__parameters_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A XML parameter database using PugiXML. Allows to add tests for different devices and the like. <a href="structviennacl_1_1io_1_1parameter__database.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta class that returns the first letter of a particular type (float or double). <a href="structviennacl_1_1io_1_1first__letter__of__type.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta-class that converts a type to a string. <a href="structviennacl_1_1io_1_1to__string.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">viennacl::io::tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html">viennacl::io::val</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">set_kernel_params</a> (std::string program_name, std::string kernel_name, unsigned int glob, unsigned int loc)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">tune_impl</a> (parameter_database ¶s, std::string parent)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">read_kernel_parameters</a> (std::string filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The interface function for reading kernel parameters. <a href="#a09e577fc61b06c9d35573ca2bc9b4181"></a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a> = "parameters"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = "devices"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a> = "device"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a> = "name"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a> = "driver"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a> = "computeunits"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a> = "workgroupsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a> = "tests"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = "test"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a> = "numeric"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a> = "kernels"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a> = "kernel"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a> = "params"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a> = "param"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a> = "value"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = "alignment"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = "globalsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a> = "localsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a> = "vector"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a> = "matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a> = "compressed_matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a> = "float"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a> = "double"</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>This file holds the code necessary for reading kernel parameters from XML files using pugixml. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/kernel__parameters_8hpp_source.html b/doc/doxygen/html/kernel__parameters_8hpp_source.html
deleted file mode 100644
index ca893f5..0000000
--- a/doc/doxygen/html/kernel__parameters_8hpp_source.html
+++ /dev/null
@@ -1,467 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/kernel_parameters.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="kernel__parameters_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef VIENNACL_IO_KERNEL_PARAMETERS_HPP</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define VIENNACL_IO_KERNEL_PARAMETERS_HPP</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "pugixml/src/pugixml.hpp"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl {
-<a name="l00027"></a><a class="code" href="namespaceviennacl_1_1io.html">00027</a> <span class="keyword">namespace </span>io {
-<a name="l00028"></a>00028
-<a name="l00029"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html">00029</a> <span class="keyword">namespace </span>tag {
-<a name="l00030"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">00030</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a> = <span class="stringliteral">"parameters"</span>;
-<a name="l00031"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">00031</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = <span class="stringliteral">"devices"</span>;
-<a name="l00032"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">00032</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a> = <span class="stringliteral">"device"</span>;
-<a name="l00033"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">00033</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a> = <span class="stringliteral">"name"</span>;
-<a name="l00034"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">00034</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a> = <span class="stringliteral">"driver"</span>;
-<a name="l00035"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">00035</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a> = <span class="stringliteral">"computeunits"</span>;
-<a name="l00036"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">00036</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a> = <span class="stringliteral">"workgroupsize"</span>;
-<a name="l00037"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">00037</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a> = <span class="stringliteral">"tests"</span>;
-<a name="l00038"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">00038</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = <span class="stringliteral">"test"</span>;
-<a name="l00039"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">00039</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a> = <span class="stringliteral">"numeric"</span>;
-<a name="l00040"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">00040</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a> = <span class="stringliteral">"kernels"</span>;
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">00041</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a> = <span class="stringliteral">"kernel"</span>;
-<a name="l00042"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">00042</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a> = <span class="stringliteral">"params"</span>;
-<a name="l00043"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">00043</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a> = <span class="stringliteral">"param"</span>;
-<a name="l00044"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">00044</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a> = <span class="stringliteral">"value"</span>;
-<a name="l00045"></a><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">00045</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = <span class="stringliteral">"alignment"</span>;
-<a name="l00046"></a>00046 } <span class="comment">// end namespace tag</span>
-<a name="l00047"></a>00047
-<a name="l00048"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html">00048</a> <span class="keyword">namespace </span>val {
-<a name="l00049"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">00049</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = <span class="stringliteral">"globalsize"</span>;
-<a name="l00050"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">00050</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a> = <span class="stringliteral">"localsize"</span>;
-<a name="l00051"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">00051</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a> = <span class="stringliteral">"vector"</span>;
-<a name="l00052"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">00052</a> std::string <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> = <span class="stringliteral">"matrix"</span>;
-<a name="l00053"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">00053</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a> = <span class="stringliteral">"compressed_matrix"</span>;
-<a name="l00054"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">00054</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a> = <span class="stringliteral">"float"</span>;
-<a name="l00055"></a><a class="code" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">00055</a> std::string <a class="code" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a> = <span class="stringliteral">"double"</span>;
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057
-<a name="l00059"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html">00059</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1parameter__database.html" title="A XML parameter database using PugiXML. Allows to add tests for different devices and the like...">parameter_database</a>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">00061</a> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a> ()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.append_child();
-<a name="l00064"></a>00064 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">tag::root</a>.c_str());
-<a name="l00065"></a>00065 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a>;
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a> = <span class="keyword">false</span>;
-<a name="l00068"></a>00068 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a> = <span class="keyword">false</span>;
-<a name="l00069"></a>00069 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a> = <span class="keyword">false</span>;
-<a name="l00070"></a>00070 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a> = <span class="keyword">false</span>;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">00073</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">add_device</a>()
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 pugi::xml_node dev;
-<a name="l00076"></a>00076 <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a>)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 dev = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>.append_child();
-<a name="l00079"></a>00079 dev.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">tag::device</a>.c_str());
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081 <span class="keywordflow">else</span>
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00084"></a>00084 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">tag::devices</a>.c_str());
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 dev = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>.append_child();
-<a name="l00087"></a>00087 dev.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">tag::device</a>.c_str());
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a> = <span class="keyword">true</span>;
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = dev;
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">00094</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">add_test</a>()
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 pugi::xml_node <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a>;
-<a name="l00097"></a>00097 <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a>)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 test = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>.append_child();
-<a name="l00100"></a>00100 test.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">tag::test</a>.c_str());
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102 <span class="keywordflow">else</span>
-<a name="l00103"></a>00103 {
-<a name="l00104"></a>00104 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00105"></a>00105 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tag::tests</a>.c_str());
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 test = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>.append_child();
-<a name="l00108"></a>00108 test.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">tag::test</a>.c_str());
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a> = <span class="keyword">true</span>;
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = test;
-<a name="l00113"></a>00113 <span class="comment">// close the current kernels section</span>
-<a name="l00114"></a>00114 <span class="comment">// so a new one is created for this new test</span>
-<a name="l00115"></a>00115 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a> = <span class="keyword">false</span>;
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117
-<a name="l00118"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">00118</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">add_kernel</a>()
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 pugi::xml_node kern;
-<a name="l00121"></a>00121 <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a>)
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 kern = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>.append_child();
-<a name="l00124"></a>00124 kern.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">tag::kernel</a>.c_str());
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 <span class="keywordflow">else</span>
-<a name="l00127"></a>00127 {
-<a name="l00128"></a>00128 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00129"></a>00129 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">tag::kernels</a>.c_str());
-<a name="l00130"></a>00130
-<a name="l00131"></a>00131 kern = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>.append_child();
-<a name="l00132"></a>00132 kern.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">tag::kernel</a>.c_str());
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a> = <span class="keyword">true</span>;
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = kern;
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 <span class="comment">// close the current parameters section</span>
-<a name="l00139"></a>00139 <span class="comment">// so a new one is created for this new kernel</span>
-<a name="l00140"></a>00140 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a> = <span class="keyword">false</span>;
-<a name="l00141"></a>00141 }
-<a name="l00142"></a>00142
-<a name="l00143"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">00143</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">add_parameter</a>()
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 pugi::xml_node para;
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keywordflow">if</span>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a>)
-<a name="l00148"></a>00148 {
-<a name="l00149"></a>00149 para = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>.append_child();
-<a name="l00150"></a>00150 para.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">tag::param</a>.c_str());
-<a name="l00151"></a>00151 }
-<a name="l00152"></a>00152 <span class="keywordflow">else</span>
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a> = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00155"></a>00155 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">tag::params</a>.c_str());
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 para = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>.append_child();
-<a name="l00158"></a>00158 para.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">tag::param</a>.c_str());
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a> = <span class="keyword">true</span>;
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a> = para;
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 <span class="keyword">template</span><<span class="keyword">typename</span> ValueT>
-<a name="l00166"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">00166</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a>(std::string tagstr, ValueT data)
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 std::stringstream ss;
-<a name="l00169"></a>00169 ss << data;
-<a name="l00170"></a>00170 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a>(tagstr, ss.str());
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172
-<a name="l00173"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a6704481b4c6d8ee327a1250dadc3ea2a">00173</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a>(std::string tagstr, std::string data)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 pugi::xml_node node = <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>.append_child();
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">tag::name</a>)
-<a name="l00178"></a>00178 node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">tag::name</a>.c_str());
-<a name="l00179"></a>00179 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">tag::driver</a>)
-<a name="l00180"></a>00180 node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">tag::driver</a>.c_str());
-<a name="l00181"></a>00181 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">tag::numeric</a>)
-<a name="l00182"></a>00182 node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">tag::numeric</a>.c_str());
-<a name="l00183"></a>00183 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">tag::alignment</a>)
-<a name="l00184"></a>00184 node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">tag::alignment</a>.c_str());
-<a name="l00185"></a>00185 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">tag::value</a>)
-<a name="l00186"></a>00186 node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">tag::value</a>.c_str());
-<a name="l00187"></a>00187 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">tag::compun</a>)
-<a name="l00188"></a>00188 node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">tag::compun</a>.c_str());
-<a name="l00189"></a>00189 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagstr == <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">tag::workgrp</a>)
-<a name="l00190"></a>00190 node.set_name(<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">tag::workgrp</a>.c_str());
-<a name="l00191"></a>00191 <span class="keywordflow">else</span>
-<a name="l00192"></a>00192 std::cout << <span class="stringliteral">"# Error adding data node: node tag not recognized .."</span> << std::endl;
-<a name="l00193"></a>00193 node.append_child(pugi::node_pcdata).set_value(data.c_str());
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">00196</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">load</a>(std::string filename)
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.load_file(filename.c_str());
-<a name="l00199"></a>00199 }
-<a name="l00200"></a>00200
-<a name="l00201"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">00201</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a>(std::string filename)
-<a name="l00202"></a>00202 {
-<a name="l00203"></a>00203 std::ofstream outstream(filename.c_str());
-<a name="l00204"></a>00204 this-><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a>(outstream);
-<a name="l00205"></a>00205 outstream.close();
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207
-<a name="l00208"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afd80b88d872b6d3dec066c52f2ccc5de">00208</a> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a>(std::ostream& stream = std::cout)
-<a name="l00209"></a>00209 {
-<a name="l00210"></a>00210 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.save(stream, <span class="stringliteral">" "</span>);
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212
-<a name="l00213"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">00213</a> pugi::xml_document <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>;
-<a name="l00214"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">00214</a> pugi::xml_node <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a>;
-<a name="l00215"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">00215</a> pugi::xml_node <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a>;
-<a name="l00216"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">00216</a> pugi::xml_node <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a>;
-<a name="l00217"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">00217</a> pugi::xml_node <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a>;
-<a name="l00218"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">00218</a> pugi::xml_node <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a>;
-<a name="l00219"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">00219</a> pugi::xml_node <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a>;
-<a name="l00220"></a>00220
-<a name="l00221"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">00221</a> <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a>;
-<a name="l00222"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">00222</a> <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a>;
-<a name="l00223"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">00223</a> <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a>;
-<a name="l00224"></a><a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">00224</a> <span class="keywordtype">bool</span> <a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a>;
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226 };
-<a name="l00227"></a>00227
-<a name="l00229"></a>00229 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00230"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html">00230</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html" title="Helper meta class that returns the first letter of a particular type (float or double).">first_letter_of_type</a>
-<a name="l00231"></a>00231 {
-<a name="l00232"></a>00232 <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">get</span>(); <span class="comment">//intentionally not implemented, class must be specialized</span>
-<a name="l00233"></a>00233 };
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 <span class="keyword">template</span> <>
-<a name="l00236"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">00236</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html" title="Helper meta class that returns the first letter of a particular type (float or double).">first_letter_of_type</a> <float>
-<a name="l00237"></a>00237 {
-<a name="l00238"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">00238</a> <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="charliteral">'f'</span>; }
-<a name="l00239"></a>00239 };
-<a name="l00240"></a>00240
-<a name="l00241"></a>00241 <span class="keyword">template</span> <>
-<a name="l00242"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">00242</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type.html" title="Helper meta class that returns the first letter of a particular type (float or double).">first_letter_of_type</a> <double>
-<a name="l00243"></a>00243 {
-<a name="l00244"></a><a class="code" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">00244</a> <span class="keyword">static</span> <span class="keywordtype">char</span> <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="charliteral">'d'</span>; }
-<a name="l00245"></a>00245 };
-<a name="l00246"></a>00246
-<a name="l00247"></a>00247 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00248"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">00248</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a>
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="keyword">static</span> std::string <span class="keyword">get</span>(); <span class="comment">//intentionally not implemented, class must be specialized</span>
-<a name="l00251"></a>00251 };
-<a name="l00252"></a>00252
-<a name="l00253"></a>00253 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00254"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">00254</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, ALIGNMENT> >
-<a name="l00255"></a>00255 {
-<a name="l00256"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">00256</a> <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00257"></a>00257 {
-<a name="l00258"></a>00258 std::stringstream ss;
-<a name="l00259"></a>00259 ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_vector_"</span> << ALIGNMENT;
-<a name="l00260"></a>00260 <span class="keywordflow">return</span> ss.str();
-<a name="l00261"></a>00261 }
-<a name="l00262"></a>00262 };
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00265"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">00265</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><T, row_major, ALIGNMENT> >
-<a name="l00266"></a>00266 {
-<a name="l00267"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">00267</a> <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00268"></a>00268 {
-<a name="l00269"></a>00269 std::stringstream ss;
-<a name="l00270"></a>00270 ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_matrix_row_"</span> << ALIGNMENT;
-<a name="l00271"></a>00271 <span class="keywordflow">return</span> ss.str();
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273 };
-<a name="l00274"></a>00274
-<a name="l00275"></a>00275 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00276"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">00276</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><T, column_major, ALIGNMENT> >
-<a name="l00277"></a>00277 {
-<a name="l00278"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">00278</a> <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00279"></a>00279 {
-<a name="l00280"></a>00280 std::stringstream ss;
-<a name="l00281"></a>00281 ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_matrix_col_"</span> << ALIGNMENT;
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> ss.str();
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284 };
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00287"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">00287</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a> < viennacl::<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><T, ALIGNMENT> >
-<a name="l00288"></a>00288 {
-<a name="l00289"></a><a class="code" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">00289</a> <span class="keyword">static</span> std::string <span class="keyword">get</span>()
-<a name="l00290"></a>00290 {
-<a name="l00291"></a>00291 std::stringstream ss;
-<a name="l00292"></a>00292 ss << first_letter_of_type<T>::get() << <span class="stringliteral">"_compressed_matrix_"</span> << ALIGNMENT;
-<a name="l00293"></a>00293 <span class="keywordflow">return</span> ss.str();
-<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 };
-<a name="l00296"></a>00296
-<a name="l00297"></a>00297 <span class="keyword">template</span><<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00298"></a><a class="code" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">00298</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">set_kernel_params</a>(std::string program_name,
-<a name="l00299"></a>00299 std::string kernel_name,
-<a name="l00300"></a>00300 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> glob, <span class="comment">//total no. of threads</span>
-<a name="l00301"></a>00301 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> loc) <span class="comment">//threads per work group</span>
-<a name="l00302"></a>00302 {
-<a name="l00303"></a>00303 <span class="comment">//get kernel from pool and set work sizes:</span>
-<a name="l00304"></a>00304 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(program_name, kernel_name);
-<a name="l00305"></a>00305 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, glob);
-<a name="l00306"></a>00306 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, loc);
-<a name="l00307"></a>00307
-<a name="l00308"></a>00308 <span class="comment">//std::cout << "Setting [" << glob << ", " << loc << "] for kernel " << kernel_name << std::endl;</span>
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311 <span class="keyword">template</span><<span class="keyword">typename</span> VclBasicType>
-<a name="l00312"></a><a class="code" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">00312</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">tune_impl</a>(<a class="code" href="structviennacl_1_1io_1_1parameter__database.html" title="A XML parameter database using PugiXML. Allows to add tests for different devices and the like...">parameter_database</a>& paras, std::string parent)
-<a name="l00313"></a>00313 {
-<a name="l00314"></a>00314 <span class="keyword">typedef</span> <span class="keyword">typename</span> VclBasicType::value_type::value_type SCALARTYPE;
-<a name="l00315"></a>00315
-<a name="l00316"></a>00316 <span class="comment">// create dummy vectors; the kernels have to be created ..</span>
-<a name="l00317"></a>00317 VclBasicType dummy;
-<a name="l00318"></a>00318
-<a name="l00319"></a>00319 <span class="comment">// extract the kernels for which parameters are present</span>
-<a name="l00320"></a>00320 std::string kernel_str = parent+<span class="stringliteral">"/kernels/kernel/name/text()"</span>;
-<a name="l00321"></a>00321 pugi::xpath_node_set kernel_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(kernel_str.c_str());
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <span class="keyword">typedef</span> std::vector<std::string> kernels_type;
-<a name="l00324"></a>00324 kernels_type <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>;
-<a name="l00325"></a>00325 std::cout << <span class="stringliteral">"Retrieving kernels..."</span> << std::endl;
-<a name="l00326"></a>00326 <span class="keywordflow">for</span> (pugi::xpath_node_set::const_iterator it = kernel_res.begin(); it != kernel_res.end(); ++it)
-<a name="l00327"></a>00327 {
-<a name="l00328"></a>00328 std::stringstream ss;
-<a name="l00329"></a>00329 it->node().print(ss, <span class="stringliteral">" "</span>);
-<a name="l00330"></a>00330 std::string kern(ss.str());
-<a name="l00331"></a>00331 kern.erase(std::remove(kern.begin(), kern.end(), <span class="charliteral">'\n'</span>), kern.end()); <span class="comment">//trim trailing linebreak</span>
-<a name="l00332"></a>00332 kernels.push_back(kern);
-<a name="l00333"></a>00333 }
-<a name="l00334"></a>00334
-<a name="l00335"></a>00335 <span class="comment">// retrieve the actual parameters</span>
-<a name="l00336"></a>00336 std::cout << <span class="stringliteral">"Retrieving actual parameters..."</span> << std::endl;
-<a name="l00337"></a>00337 <span class="keywordflow">for</span>(<span class="keyword">typename</span> kernels_type::iterator iter = kernels.begin();
-<a name="l00338"></a>00338 iter != kernels.end(); iter++)
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 <span class="comment">// retrieving the work group ..</span>
-<a name="l00341"></a>00341 std::string wg_str = parent+<span class="stringliteral">"/kernels/kernel[name='"</span>+*iter+<span class="stringliteral">"']/params/param[name='"</span>+<a class="code" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">val::globsize</a>+<span class="stringliteral">"']/value/text()"</span>;
-<a name="l00342"></a>00342 pugi::xpath_node_set wg_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(wg_str.c_str());
-<a name="l00343"></a>00343
-<a name="l00344"></a>00344 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> global_size(0);
-<a name="l00345"></a>00345
-<a name="l00346"></a>00346 std::stringstream ss;
-<a name="l00347"></a>00347 ss << wg_res[0].node().value();
-<a name="l00348"></a>00348 ss >> global_size;
-<a name="l00349"></a>00349
-<a name="l00350"></a>00350 <span class="comment">// retrieving the local_workers ..</span>
-<a name="l00351"></a>00351 std::string lw_str = parent+<span class="stringliteral">"/kernels/kernel[name='"</span>+*iter+<span class="stringliteral">"']/params/param[name='"</span>+<a class="code" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">val::locsize</a>+<span class="stringliteral">"']/value/text()"</span>;
-<a name="l00352"></a>00352 pugi::xpath_node_set lw_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(lw_str.c_str());
-<a name="l00353"></a>00353
-<a name="l00354"></a>00354 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> local_workers(0);
-<a name="l00355"></a>00355
-<a name="l00356"></a>00356 ss.clear();
-<a name="l00357"></a>00357 ss << lw_res[0].node().value();
-<a name="l00358"></a>00358 ss >> local_workers;
-<a name="l00359"></a>00359
-<a name="l00360"></a>00360 <span class="comment">//std::cout << "kernel: " << *iter << " wg: " << work_group << " lw: " << local_workers << std::endl;</span>
-<a name="l00361"></a>00361
-<a name="l00362"></a>00362 <span class="comment">// set the parameters</span>
-<a name="l00363"></a>00363 set_kernel_params<SCALARTYPE,1> (<a class="code" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">program_for_vcltype<VclBasicType>::get</a>(), *iter, global_size, local_workers);
-<a name="l00364"></a>00364 <span class="comment">//set_kernel_params<SCALARTYPE,4> (*iter, work_group * local_workers, local_workers); </span>
-<a name="l00365"></a>00365 <span class="comment">//set_kernel_params<SCALARTYPE,16>(*iter, work_group * local_workers, local_workers); </span>
-<a name="l00366"></a>00366 }
-<a name="l00367"></a>00367 }
-<a name="l00368"></a>00368
-<a name="l00370"></a>00370 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00371"></a><a class="code" href="structviennacl_1_1io_1_1to__string.html">00371</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string</a> {};
-<a name="l00372"></a>00372
-<a name="l00373"></a>00373 <span class="keyword">template</span> <>
-<a name="l00374"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">00374</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string</a><float>
-<a name="l00375"></a>00375 {
-<a name="l00376"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">00376</a> <span class="keyword">static</span> std::string <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="stringliteral">"float"</span>; }
-<a name="l00377"></a>00377 };
-<a name="l00378"></a>00378
-<a name="l00379"></a>00379 <span class="keyword">template</span> <>
-<a name="l00380"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">00380</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string</a><double>
-<a name="l00381"></a>00381 {
-<a name="l00382"></a><a class="code" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">00382</a> <span class="keyword">static</span> std::string <span class="keyword">get</span>() { <span class="keywordflow">return</span> <span class="stringliteral">"double"</span>; }
-<a name="l00383"></a>00383 };
-<a name="l00384"></a>00384
-<a name="l00390"></a>00390 <span class="keyword">template</span><<span class="keyword">typename</span> VclBasicType>
-<a name="l00391"></a><a class="code" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">00391</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181" title="The interface function for reading kernel parameters.">read_kernel_parameters</a>(std::string filename)
-<a name="l00392"></a>00392 {
-<a name="l00393"></a>00393 <span class="keyword">typedef</span> <span class="keyword">typename</span> VclBasicType::value_type::value_type SCALARTYPE;
-<a name="l00394"></a>00394
-<a name="l00395"></a>00395 <a class="code" href="structviennacl_1_1io_1_1parameter__database.html" title="A XML parameter database using PugiXML. Allows to add tests for different devices and the like...">parameter_database</a> paras;
-<a name="l00396"></a>00396 paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">load</a>(filename);
-<a name="l00397"></a>00397
-<a name="l00398"></a>00398 std::string devname = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a37627d5d5bba7f4a8690c71c2ab3cb07" title="Returns the device name.">name</a>();
-<a name="l00399"></a>00399
-<a name="l00400"></a>00400 <span class="comment">// check if tune parameters for the current device are present</span>
-<a name="l00401"></a>00401 std::string device_str = <span class="stringliteral">"/parameters/devices/device[name='"</span>+devname+<span class="stringliteral">"']"</span>;
-<a name="l00402"></a>00402 pugi::xpath_node_set device_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(device_str.c_str());
-<a name="l00403"></a>00403
-<a name="l00404"></a>00404 <span class="keywordflow">if</span>(device_res.size() == 0)
-<a name="l00405"></a>00405 {
-<a name="l00406"></a>00406 std::cout << <span class="stringliteral">"Tuner: There are no parameters for this device present!"</span> << std::endl;
-<a name="l00407"></a>00407 <span class="comment">// evaluate the parameters for this device?</span>
-<a name="l00408"></a>00408 }
-<a name="l00409"></a>00409
-<a name="l00410"></a>00410 <span class="comment">// check if tune parameters for float exist</span>
-<a name="l00411"></a>00411 std::string numeric_str = device_str+<span class="stringliteral">"/tests/test[numeric='"</span>+<a class="code" href="structviennacl_1_1io_1_1to__string.html" title="Helper meta-class that converts a type to a string.">to_string<SCALARTYPE>::get</a>()+<span class="stringliteral">"']"</span>;
-<a name="l00412"></a>00412 pugi::xpath_node_set numeric_res = paras.<a class="code" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a>.select_nodes(numeric_str.c_str());
-<a name="l00413"></a>00413
-<a name="l00414"></a>00414 <span class="keywordflow">if</span>(numeric_res.size() > 0)
-<a name="l00415"></a>00415 {
-<a name="l00416"></a>00416 tune_impl<VclBasicType>(paras, numeric_str);
-<a name="l00417"></a>00417 }
-<a name="l00418"></a>00418 <span class="keywordflow">else</span>
-<a name="l00419"></a>00419 {
-<a name="l00420"></a>00420 std::cout << <span class="stringliteral">"Tuner: There are no parameters for numeric type float present!"</span> << std::endl;
-<a name="l00421"></a>00421 }
-<a name="l00422"></a>00422
-<a name="l00423"></a>00423 <span class="comment">// // check if tune parameters for double exist</span>
-<a name="l00424"></a>00424 <span class="comment">// std::string double_str = device_str+"/tests/test[numeric='"+val::dbl+"']";</span>
-<a name="l00425"></a>00425 <span class="comment">// pugi::xpath_node_set double_res = paras.doc.select_nodes(double_str.c_str());</span>
-<a name="l00426"></a>00426 <span class="comment">// </span>
-<a name="l00427"></a>00427 <span class="comment">// if(double_res.size() > 0)</span>
-<a name="l00428"></a>00428 <span class="comment">// {</span>
-<a name="l00429"></a>00429 <span class="comment">// tune_impl<double>(paras, double_str);</span>
-<a name="l00430"></a>00430 <span class="comment">// }</span>
-<a name="l00431"></a>00431 <span class="comment">// else</span>
-<a name="l00432"></a>00432 <span class="comment">// {</span>
-<a name="l00433"></a>00433 <span class="comment">// std::cout << "Tuner: There are no parameters for numeric type double present!" << std::endl; </span>
-<a name="l00434"></a>00434 <span class="comment">// }</span>
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 }
-<a name="l00437"></a>00437
-<a name="l00438"></a>00438 } <span class="comment">// end namespace io</span>
-<a name="l00439"></a>00439
-<a name="l00440"></a>00440 } <span class="comment">// end namespace viennacl</span>
-<a name="l00441"></a>00441
-<a name="l00442"></a>00442 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/local__mem_8hpp.html b/doc/doxygen/html/local__mem_8hpp.html
deleted file mode 100644
index 2e029da..0000000
--- a/doc/doxygen/html/local__mem_8hpp.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>A local (shared) memory object for OpenCL.
-<a href="#_details">More...</a></p>
-
-<p><a href="local__mem_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing local (shared) OpenCL memory. Typically used as kernel argument. <a href="classviennacl_1_1ocl_1_1local__mem.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A local (shared) memory object for OpenCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/local__mem_8hpp_source.html b/doc/doxygen/html/local__mem_8hpp_source.html
deleted file mode 100644
index 384fefd..0000000
--- a/doc/doxygen/html/local__mem_8hpp_source.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/local_mem.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="local__mem_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef _VIENNACL_LOCAL_MEM_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_LOCAL_MEM_HPP_</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="keyword">namespace </span>viennacl
-<a name="l00024"></a>00024 {
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>ocl
-<a name="l00026"></a>00026 {
-<a name="l00028"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html">00028</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">local_mem</a>
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <span class="keyword">public</span>:
-<a name="l00031"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">00031</a> <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a33c50a9e8dcc7fbeeda4b6cadc0e7d53">local_mem</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> s) : size_(s) {}
-<a name="l00032"></a>00032
-<a name="l00034"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812">00034</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns size in bytes.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> size_; }
-<a name="l00035"></a>00035
-<a name="l00037"></a><a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da">00037</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html#a262aef9302860b3cb5f8fc4bee1531da" title="Sets the size of the local memory in bytes.">size</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> s) { size_ = s; }
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keyword">private</span>:
-<a name="l00040"></a>00040 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> size_;
-<a name="l00041"></a>00041 };
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 }
-<a name="l00044"></a>00044 }
-<a name="l00045"></a>00045 <span class="preprocessor">#endif</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix_8hpp.html b/doc/doxygen/html/matrix_8hpp.html
deleted file mode 100644
index 9ceee94..0000000
--- a/doc/doxygen/html/matrix_8hpp.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the dense matrix class.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__operations_8hpp_source.html">viennacl/linalg/matrix_operations.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__size__deducer_8hpp_source.html">viennacl/tools/matrix_size_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</code><br/>
-
-<p><a href="matrix_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html">row_major</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for row-major storage of a dense matrix. <a href="structviennacl_1_1row__major.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html">column_major</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing row index of a matrix. <a href="structviennacl_1_1row__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing columns index of a matrix. <a href="structviennacl_1_1col__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator< ROWCOL, MATRIXTYPE ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html">matrix< SCALARTYPE, F, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A dense matrix class. <a href="classviennacl_1_1matrix.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#abc6cd55d2644b2c6b5f69cb733fb6f24">operator<<</a> (std::ostream &s, const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas. <a href="#abc6cd55d2644b2c6b5f69cb733fb6f24"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">operator<<</a> (std::ostream &s, const matrix_expression< LHS, RHS, OP > &expr)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas. <a href="#ab7b70e43299f65259cc61849f9ad997c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">matrix_expression< const <br class="typebreak"/>
-matrix< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const matrix<br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">trans</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an expression template class representing a transposed matrix. <a href="#a95013bc545c5642ccfbd8c5ceb3b885c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4bd43fae5bc2cdd71e384d1794527add">copy</a> (const CPU_MATRIX &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). <a href="#a4bd43fae5bc2cdd71e384d1794527add"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a376734f00b48e1c773c82eb9290c1f08">copy</a> (const std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense STL-type matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). <a href="#a376734f00b48e1c773c82eb9290c1f08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">fast_copy</a> (SCALARTYPE *cpu_matrix_begin, SCALARTYPE *cpu_matrix_end, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without temporary. Matrix-Layout on CPU must be equal to the matrix-layout on the GPU. <a href="#ab917c8f27a8f1cf7b8d6be54989efb99"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">copy</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). <a href="#a0b4ced508c064fe8b45f437b538ed2ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a72359f3759c0067ac956d01c36651f9a">copy</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). <a href="#a72359f3759c0067ac956d01c36651f9a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a2fae23064f21ff285672845e82545fd2">fast_copy</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, SCALARTYPE *cpu_matrix_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). <a href="#a2fae23064f21ff285672845e82545fd2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod >, const SCALARTYPE, <br class="typebreak"/>
-op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > &proxy, CPU_SCALAR val)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae29e41dc09ce774a0082eb52bdcb81e7">operator*</a> (CPU_SCALAR val, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 >, op_prod > const &proxy)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the dense matrix class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix_8hpp_source.html b/doc/doxygen/html/matrix_8hpp_source.html
deleted file mode 100644
index 284dbee..0000000
--- a/doc/doxygen/html/matrix_8hpp_source.html
+++ /dev/null
@@ -1,824 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/matrix.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="matrix__size__deducer_8hpp.html" title="Helper implementations that deduce the dimensions of the supplied matrix-valued expressions.">viennacl/tools/matrix_size_deducer.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00034"></a><a class="code" href="structviennacl_1_1row__major.html">00034</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__major.html" title="A tag for row-major storage of a dense matrix.">row_major</a>
-<a name="l00035"></a>00035 {
-<a name="l00043"></a><a class="code" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">00043</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881" title="Returns the memory offset for entry (i,j) of a dense matrix.">mem_index</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_cols)
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="keywordflow">return</span> i * num_cols + j;
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047
-<a name="l00048"></a><a class="code" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">00048</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00049"></a>00049 {
-<a name="l00050"></a>00050 <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);;
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">00053</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00054"></a>00054 {
-<a name="l00055"></a>00055 <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 };
-<a name="l00058"></a>00058
-<a name="l00059"></a><a class="code" href="structviennacl_1_1column__major.html">00059</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1column__major.html">column_major</a>
-<a name="l00060"></a>00060 {
-<a name="l00068"></a><a class="code" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">00068</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881" title="Returns the memory offset for entry (i,j) of a dense matrix.">mem_index</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_cols)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> i + j * num_rows;
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a><a class="code" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">00073</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00078"></a><a class="code" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">00078</a> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cols, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a>)
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082 };
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00086"></a><a class="code" href="classviennacl_1_1matrix__expression.html">00086</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>
-<a name="l00087"></a>00087 {
-<a name="l00088"></a>00088 <span class="keyword">public</span>:
-<a name="l00090"></a>00090 <span class="comment">//*/</span>
-<a name="l00091"></a>00091 <span class="comment">//typedef typename viennacl::tools::VECTOR_EXTRACTOR<LHS, RHS>::ResultType VectorType;</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a><a class="code" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53">00093</a> <a class="code" href="classviennacl_1_1matrix__expression.html#a466edf19960e38ab2eecab2109956c53" title="Extracts the vector type from the two operands.">matrix_expression</a>(LHS & <a class="code" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>, RHS & <a class="code" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>) : _lhs(lhs), _rhs(rhs) {}
-<a name="l00094"></a>00094
-<a name="l00097"></a><a class="code" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830">00097</a> LHS & <a class="code" href="classviennacl_1_1matrix__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _lhs; }
-<a name="l00100"></a><a class="code" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82">00100</a> RHS & <a class="code" href="classviennacl_1_1matrix__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rhs; }
-<a name="l00101"></a>00101
-<a name="l00103"></a><a class="code" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7">00103</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the size of the result vector.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the size of the result vector.">viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size1</a>(_lhs, _rhs); }
-<a name="l00104"></a><a class="code" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">00104</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html#aacffdea3e049b0080b6fa4ac4c2fd881">viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size2</a>(_lhs, _rhs); }
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keyword">private</span>:
-<a name="l00108"></a>00108 LHS & _lhs;
-<a name="l00110"></a>00110 RHS & _rhs;
-<a name="l00111"></a>00111 };
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113
-<a name="l00115"></a><a class="code" href="structviennacl_1_1row__iteration.html">00115</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1row__iteration.html" title="A tag indicating iteration along increasing row index of a matrix.">row_iteration</a> {};
-<a name="l00116"></a>00116
-<a name="l00118"></a><a class="code" href="structviennacl_1_1col__iteration.html">00118</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1col__iteration.html" title="A tag indicating iteration along increasing columns index of a matrix.">col_iteration</a> {};
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="comment">//STL-like iterator. TODO: STL-compliance...</span>
-<a name="l00121"></a>00121 <span class="keyword">template</span> <<span class="keyword">typename</span> ROWCOL, <span class="keyword">typename</span> MATRIXTYPE>
-<a name="l00122"></a><a class="code" href="classviennacl_1_1matrix__iterator.html">00122</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a>
-<a name="l00123"></a>00123 {
-<a name="l00124"></a>00124 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator<ROWCOL, MATRIXTYPE></a> <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a>;
-<a name="l00125"></a>00125 <span class="keyword">public</span>:
-<a name="l00126"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">00126</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> MATRIXTYPE::value_type value_type;
-<a name="l00127"></a>00127
-<a name="l00128"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">00128</a> <a class="code" href="classviennacl_1_1matrix__iterator.html#af0a6ccd186d6da5fae3227b45fbfcf5a">matrix_iterator</a>(MATRIXTYPE & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> start_row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> start_col) : _mat(mat), _row(start_row), _col(start_col) {};
-<a name="l00129"></a>00129
-<a name="l00130"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">00130</a> <a class="code" href="classviennacl_1_1matrix__iterator.html#a4d1008b55c3e6de3a019d5514c4393d8">value_type</a> <a class="code" href="classviennacl_1_1matrix__iterator.html#a94001b4941ee37e508c3442528389b16">operator*</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> _mat(_row, _col); }
-<a name="l00131"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">00131</a> <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> & <a class="code" href="classviennacl_1_1matrix__iterator.html#aa5055e4100b53acad1be8697088ff1dc">operator++</a>(<span class="keywordtype">void</span>) { <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">viennacl::tools::MATRIX_ITERATOR_INCREMENTER<ROWCOL, MATRIXTYPE>::apply</a>(_mat, _row, _col); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00132"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a4419c6af964a7de542db8474f8ef1091">00132</a> <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> & <a class="code" href="classviennacl_1_1matrix__iterator.html#a4419c6af964a7de542db8474f8ef1091">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">00134</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#ad25b9ad360f06fda1535074b749cf023">operator==</a>(<a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> <span class="keyword">const</span> & other) { <span class="keywordflow">return</span> (_row == other._row) && (_col == other._col); }
-<a name="l00135"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">00135</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#a111e186f57ea74111730a997ba77ea17">operator!=</a>(<a class="code" href="classviennacl_1_1matrix__iterator.html">self_type</a> <span class="keyword">const</span> & other) { <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == other); }
-<a name="l00136"></a>00136
-<a name="l00137"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">00137</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#a4c13e5b96cb010e538968b7c330dbfbd">index1</a>() { <span class="keywordflow">return</span> _row; }
-<a name="l00138"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">00138</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix__iterator.html#a3b437ced850483c2d50f888a33463c95">index2</a>() { <span class="keywordflow">return</span> _col; }
-<a name="l00139"></a>00139
-<a name="l00140"></a><a class="code" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">00140</a> MATRIXTYPE & <a class="code" href="classviennacl_1_1matrix__iterator.html#a472f3f82844b2d229acbd12e34d6764b">operator()</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _mat; }
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="keyword">private</span>:
-<a name="l00143"></a>00143 MATRIXTYPE & _mat;
-<a name="l00144"></a>00144 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _row;
-<a name="l00145"></a>00145 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _col;
-<a name="l00146"></a>00146 };
-<a name="l00147"></a>00147
-<a name="l00154"></a>00154 <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00155"></a><a class="code" href="classviennacl_1_1matrix.html">00155</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 <span class="keyword">public</span>:
-<a name="l00159"></a>00159
-<a name="l00160"></a><a class="code" href="classviennacl_1_1matrix.html#ac726b43e88eee76bc8d8eb9dcd8a5fb4">00160</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator<row_iteration, matrix<SCALARTYPE, F, ALIGNMENT></a> > <a class="code" href="classviennacl_1_1matrix__iterator.html">iterator1</a>;
-<a name="l00161"></a><a class="code" href="classviennacl_1_1matrix.html#ac85ff703941f442ef2b38ce83b71d808">00161</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1matrix__iterator.html">matrix_iterator<col_iteration, matrix<SCALARTYPE, F, ALIGNMENT></a> > <a class="code" href="classviennacl_1_1matrix__iterator.html">iterator2</a>;
-<a name="l00162"></a><a class="code" href="classviennacl_1_1matrix.html#aed985c700866b1bae61cb8bcd5d322fe">00162</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00163"></a>00163
-<a name="l00165"></a><a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3">00165</a> <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>() : _rows(0), _columns(0)
-<a name="l00166"></a>00166 {
-<a name="l00167"></a>00167 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00168"></a>00168 KernelClass::init();
-<a name="l00169"></a>00169 };
-<a name="l00170"></a>00170
-<a name="l00176"></a><a class="code" href="classviennacl_1_1matrix.html#a67e5572450ecba91b1bfe1f691236bbd">00176</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> columns) :
-<a name="l00177"></a>00177 _rows(rows), _columns(columns)
-<a name="l00178"></a>00178 {
-<a name="l00179"></a>00179 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00180"></a>00180 KernelClass::init();
-<a name="l00181"></a>00181 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183
-<a name="l00184"></a><a class="code" href="classviennacl_1_1matrix.html#ad97f1c76628466ba92630597913b7798">00184</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(cl_mem mem, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> columns) :
-<a name="l00185"></a>00185 _rows(rows), _columns(columns)
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00188"></a>00188 KernelClass::init();
-<a name="l00189"></a>00189 _elements = mem;
-<a name="l00190"></a>00190 _elements.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); <span class="comment">//prevents that the user-provided memory is deleted once the matrix object is destroyed.</span>
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00194"></a><a class="code" href="classviennacl_1_1matrix.html#a625b18f427f3642439f1a84f01fd1a16">00194</a> <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy) : _rows(proxy.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()), _columns(proxy.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>())
-<a name="l00195"></a>00195 {
-<a name="l00196"></a>00196 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00197"></a>00197 KernelClass::init();
-<a name="l00198"></a>00198 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 *<span class="keyword">this</span> = proxy;
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 <span class="comment">//copy constructor:</span>
-<a name="l00205"></a><a class="code" href="classviennacl_1_1matrix.html#a26544386781d4023aa902d3cb922e0eb">00205</a> <a class="code" href="classviennacl_1_1matrix.html#a2b7f607d95bd2aeb66a382ff2df384c3" title="The default constructor. Does not allocate any memory.">matrix</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat) :
-<a name="l00206"></a>00206 _rows(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()), _columns(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()),
-<a name="l00207"></a>00207 _elements(viennacl::ocl::<a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>()))
-<a name="l00208"></a>00208 {
-<a name="l00209"></a>00209 cl_int err;
-<a name="l00210"></a>00210 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), 0, NULL, NULL);
-<a name="l00211"></a>00211 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213
-<a name="l00214"></a><a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">00214</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), <span class="keyword">false</span>);
-<a name="l00217"></a>00217 cl_int err;
-<a name="l00218"></a>00218 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), 0, NULL, NULL);
-<a name="l00219"></a>00219 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00220"></a>00220 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00221"></a>00221 }
-<a name="l00222"></a>00222
-<a name="l00223"></a><a class="code" href="classviennacl_1_1matrix.html#a8130ec92bb6c6f3d9522c5e32528bdfc">00223</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00224"></a>00224 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00225"></a>00225 op_trans> & proxy)
-<a name="l00226"></a>00226 {
-<a name="l00227"></a>00227 assert(<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != proxy.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>() && <span class="stringliteral">"Self-assignment of matrix transpose not implemented"</span>);
-<a name="l00228"></a>00228 assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() && <span class="stringliteral">"Matrix dimensions do not match!"</span>);
-<a name="l00229"></a>00229 assert(proxy.lhs().size2() == <a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() && <span class="stringliteral">"Matrix dimensions do not match!"</span>);
-<a name="l00230"></a>00230
-<a name="l00231"></a>00231 <a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(proxy.lhs().size2(), proxy.lhs().size1(), <span class="keyword">false</span>);
-<a name="l00232"></a>00232
-<a name="l00233"></a>00233 std::vector<SCALARTYPE> temp(proxy.lhs().internal_size());
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(),
-<a name="l00236"></a>00236 proxy.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>(), CL_TRUE, 0,
-<a name="l00237"></a>00237 <span class="keyword">sizeof</span>(SCALARTYPE)*proxy.lhs().internal_size(),
-<a name="l00238"></a>00238 &(temp[0]), 0, NULL, NULL);
-<a name="l00239"></a>00239 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00240"></a>00240 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 <span class="comment">/*</span>
-<a name="l00243"></a>00243 <span class="comment"> for (size_t i=0; i<proxy.lhs().size1(); ++i)</span>
-<a name="l00244"></a>00244 <span class="comment"> {</span>
-<a name="l00245"></a>00245 <span class="comment"> for (size_t j=0; j<proxy.lhs().size2(); ++j)</span>
-<a name="l00246"></a>00246 <span class="comment"> std::cout << temp[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())] << ", ";</span>
-<a name="l00247"></a>00247 <span class="comment"> }*/</span>
-<a name="l00248"></a>00248
-<a name="l00249"></a>00249 std::vector<SCALARTYPE> temp_trans(<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00250"></a>00250
-<a name="l00251"></a>00251 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<proxy.lhs().size1(); ++i)
-<a name="l00252"></a>00252 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j=0; j<proxy.lhs().size2(); ++j)
-<a name="l00253"></a>00253 temp_trans[F::mem_index(j,i, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())]
-<a name="l00254"></a>00254 = temp[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())];
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 <span class="comment">/* </span>
-<a name="l00257"></a>00257 <span class="comment"> for (size_t i=0; i<proxy.lhs().size1(); ++i)</span>
-<a name="l00258"></a>00258 <span class="comment"> {</span>
-<a name="l00259"></a>00259 <span class="comment"> for (size_t j=0; j<proxy.lhs().size2(); ++j)</span>
-<a name="l00260"></a>00260 <span class="comment"> std::cout << temp_trans[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())] << ", ";</span>
-<a name="l00261"></a>00261 <span class="comment"> }*/</span>
-<a name="l00262"></a>00262
-<a name="l00263"></a>00263 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE,
-<a name="l00264"></a>00264 <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(),
-<a name="l00265"></a>00265 &(temp_trans[0]));
-<a name="l00266"></a>00266
-<a name="l00267"></a>00267 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270
-<a name="l00271"></a>00271
-<a name="l00279"></a><a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23">00279</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> rows, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> columns, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00280"></a>00280 {
-<a name="l00281"></a>00281 assert(rows > 0 && columns > 0);
-<a name="l00282"></a>00282 <span class="keywordflow">if</span> (preserve)
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 <span class="comment">//get old entries:</span>
-<a name="l00285"></a>00285 std::vector< SCALARTYPE > old_entries(<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00286"></a>00286 cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <span class="comment">//src</span>
-<a name="l00287"></a>00287 <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <span class="comment">//dest</span>
-<a name="l00288"></a>00288 CL_TRUE, <span class="comment">//blocking</span>
-<a name="l00289"></a>00289 0, <span class="comment">//offset</span>
-<a name="l00290"></a>00290 <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), <span class="comment">//size</span>
-<a name="l00291"></a>00291 &(old_entries[0]), <span class="comment">//destination</span>
-<a name="l00292"></a>00292 0, NULL, NULL);
-<a name="l00293"></a>00293 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00294"></a>00294
-<a name="l00295"></a>00295 <span class="comment">//set up entries of new matrix:</span>
-<a name="l00296"></a>00296 std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
-<a name="l00297"></a>00297 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i<rows; ++i)
-<a name="l00298"></a>00298 {
-<a name="l00299"></a>00299 <span class="keywordflow">if</span> (i >= _rows)
-<a name="l00300"></a>00300 <span class="keywordflow">continue</span>;
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j=0; j<columns; ++j)
-<a name="l00303"></a>00303 {
-<a name="l00304"></a>00304 <span class="keywordflow">if</span> (j >= _columns)
-<a name="l00305"></a>00305 <span class="keywordflow">continue</span>;
-<a name="l00306"></a>00306 new_entries[F::mem_index(i, j, F::internal_size1(rows, ALIGNMENT), F::internal_size2(columns, ALIGNMENT))]
-<a name="l00307"></a>00307 = old_entries[F::mem_index(i, j, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())];
-<a name="l00308"></a>00308 }
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311 <span class="comment">//copy new entries to GPU:</span>
-<a name="l00312"></a>00312 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, new_entries);
-<a name="l00313"></a>00313 _rows = rows;
-<a name="l00314"></a>00314 _columns = columns;
-<a name="l00315"></a>00315 }
-<a name="l00316"></a>00316 <span class="keywordflow">else</span> <span class="comment">//discard old entries:</span>
-<a name="l00317"></a>00317 {
-<a name="l00318"></a>00318 _rows = rows;
-<a name="l00319"></a>00319 _columns = columns;
-<a name="l00320"></a>00320
-<a name="l00321"></a>00321 std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
-<a name="l00322"></a>00322 _elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, new_entries);
-<a name="l00323"></a>00323 }
-<a name="l00324"></a>00324 }
-<a name="l00325"></a>00325
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327 <span class="comment">//read-write access to an element of the vector</span>
-<a name="l00330"></a><a class="code" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571">00330</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a> <a class="code" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571" title="Read-write access to a single element of the vector.">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row_index, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> col_index)
-<a name="l00331"></a>00331 {
-<a name="l00332"></a>00332 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(F::mem_index(row_index, col_index, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()), _elements);
-<a name="l00333"></a>00333 }
-<a name="l00334"></a>00334
-<a name="l00337"></a><a class="code" href="classviennacl_1_1matrix.html#a85566d47047a4d034c6f5afcb3411b33">00337</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <a class="code" href="classviennacl_1_1matrix.html#aee035c6150315c1511e4abfda4b17571" title="Read-write access to a single element of the vector.">operator()</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> row_index, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> col_index)<span class="keyword"> const</span>
-<a name="l00338"></a>00338 <span class="keyword"> </span>{
-<a name="l00339"></a>00339 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> tmp;
-<a name="l00340"></a>00340 cl_int err;
-<a name="l00341"></a>00341 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(),
-<a name="l00342"></a>00342 _elements,
-<a name="l00343"></a>00343 tmp.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(),
-<a name="l00344"></a>00344 <span class="keyword">sizeof</span>(SCALARTYPE) * F::mem_index(row_index, col_index, <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()),
-<a name="l00345"></a>00345 0,
-<a name="l00346"></a>00346 <span class="keyword">sizeof</span>(SCALARTYPE),
-<a name="l00347"></a>00347 0,
-<a name="l00348"></a>00348 NULL,
-<a name="l00349"></a>00349 NULL);
-<a name="l00350"></a>00350 <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00351"></a>00351 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00352"></a>00352 <span class="keywordflow">return</span> tmp;
-<a name="l00353"></a>00353 }
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355
-<a name="l00356"></a>00356 <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00357"></a>00357 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00358"></a>00358 op_add >
-<a name="l00359"></a><a class="code" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">00359</a> <a class="code" href="classviennacl_1_1matrix.html#a7693f9e5a4310f9f89ab8c5fadc2c5c0">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other)
-<a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00362"></a>00362 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00363"></a>00363 op_add > (*<span class="keyword">this</span>, other);
-<a name="l00364"></a>00364 }
-<a name="l00365"></a>00365
-<a name="l00366"></a>00366
-<a name="l00367"></a><a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">00367</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other)
-<a name="l00368"></a>00368 {
-<a name="l00369"></a>00369 <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">viennacl::linalg::inplace_add</a>(*<span class="keyword">this</span>, other);
-<a name="l00370"></a>00370 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00371"></a>00371 }
-<a name="l00372"></a>00372
-<a name="l00373"></a>00373 <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00374"></a>00374 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00375"></a>00375 op_sub >
-<a name="l00376"></a><a class="code" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">00376</a> <a class="code" href="classviennacl_1_1matrix.html#ada8b83b6ead4dfed5ec3c087580cf6b9">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other)
-<a name="l00377"></a>00377 {
-<a name="l00378"></a>00378 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00379"></a>00379 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00380"></a>00380 op_sub > (*<span class="keyword">this</span>, other);
-<a name="l00381"></a>00381 }
-<a name="l00382"></a>00382
-<a name="l00383"></a><a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">00383</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix< SCALARTYPE, F, ALIGNMENT></a> & other)
-<a name="l00384"></a>00384 {
-<a name="l00385"></a>00385 <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">viennacl::linalg::inplace_sub</a>(*<span class="keyword">this</span>, other);
-<a name="l00386"></a>00386 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00387"></a>00387 }
-<a name="l00388"></a>00388
-<a name="l00389"></a>00389 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00390"></a><a class="code" href="classviennacl_1_1matrix.html#a0e5c37d9c65e5c457816ebabde5dfe6b">00390</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00391"></a>00391 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00392"></a>00392 op_prod > & proxy)
-<a name="l00393"></a>00393 {
-<a name="l00394"></a>00394 <a class="code" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716" title="The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update.">viennacl::linalg::rank_1_update</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00395"></a>00395 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00396"></a>00396 }
-<a name="l00397"></a>00397
-<a name="l00398"></a>00398 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00399"></a><a class="code" href="classviennacl_1_1matrix.html#ac48ef303a00c6f0418fd991779bba455">00399</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00400"></a>00400 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00401"></a>00401 op_prod > & proxy)
-<a name="l00402"></a>00402 {
-<a name="l00403"></a>00403 <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">viennacl::linalg::scaled_rank_1_update</a>(*<span class="keyword">this</span>, static_cast<SCALARTYPE>(-1.0), proxy.lhs(), proxy.rhs());
-<a name="l00404"></a>00404 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00405"></a>00405 }
-<a name="l00406"></a>00406
-<a name="l00407"></a>00407 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00408"></a><a class="code" href="classviennacl_1_1matrix.html#a9f0249af669fc7dfa3e9baf15c74fefb">00408</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a017324eb06f5b4f9f43a1931d151e99c">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00409"></a>00409 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00410"></a>00410 op_prod >,
-<a name="l00411"></a>00411 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00412"></a>00412 op_prod > & proxy)
-<a name="l00413"></a>00413 {
-<a name="l00414"></a>00414 <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">viennacl::linalg::scaled_rank_1_update</a>(*<span class="keyword">this</span>, proxy.rhs(), proxy.lhs().lhs(), proxy.lhs().rhs());
-<a name="l00415"></a>00415 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00416"></a>00416 }
-<a name="l00417"></a>00417
-<a name="l00418"></a>00418 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00419"></a><a class="code" href="classviennacl_1_1matrix.html#abf94aa936b88e8840684fdcb71c975af">00419</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aeaadfa9e3ffd70b4d4787bc832a964e6">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A1></a>,
-<a name="l00420"></a>00420 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A2></a>,
-<a name="l00421"></a>00421 op_prod >,
-<a name="l00422"></a>00422 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00423"></a>00423 op_prod > & proxy)
-<a name="l00424"></a>00424 {
-<a name="l00425"></a>00425 <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">viennacl::linalg::scaled_rank_1_update</a>(*<span class="keyword">this</span>, static_cast<SCALARTYPE>(-1.0) * proxy.rhs(), proxy.lhs().lhs(), proxy.lhs().rhs());
-<a name="l00426"></a>00426 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00427"></a>00427 }
-<a name="l00428"></a>00428
-<a name="l00429"></a>00429
-<a name="l00430"></a><a class="code" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">00430</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">operator *= </a>(SCALARTYPE val)
-<a name="l00431"></a>00431 {
-<a name="l00432"></a>00432 <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, val);
-<a name="l00433"></a>00433 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00434"></a>00434 }
-<a name="l00435"></a>00435
-<a name="l00436"></a><a class="code" href="classviennacl_1_1matrix.html#ab87ac2c48bb2b05ce27a01180e09f869">00436</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#af9d2e9edda2d1896fcbcf2d6068bd90f">operator *= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l00437"></a>00437 {
-<a name="l00438"></a>00438 <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, val);
-<a name="l00439"></a>00439 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00440"></a>00440 }
-<a name="l00441"></a>00441
-<a name="l00442"></a><a class="code" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">00442</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">operator /= </a>(SCALARTYPE val)
-<a name="l00443"></a>00443 {
-<a name="l00444"></a>00444 <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, SCALARTYPE(1.0) / val);
-<a name="l00445"></a>00445 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00446"></a>00446 }
-<a name="l00447"></a>00447
-<a name="l00448"></a><a class="code" href="classviennacl_1_1matrix.html#a613b5b6e9bc337aea80d09e92179c204">00448</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#a9bc4ea8061b64ebd021610e805e00f76">operator /= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l00449"></a>00449 {
-<a name="l00450"></a>00450 <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_divide</a>(*<span class="keyword">this</span>, val);
-<a name="l00451"></a>00451 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00452"></a>00452 }
-<a name="l00453"></a>00453
-<a name="l00454"></a>00454
-<a name="l00455"></a>00455 <span class="comment">//this = A * B and related (with trans())</span>
-<a name="l00456"></a>00456 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1, <span class="keyword">typename</span> MatrixType2>
-<a name="l00457"></a><a class="code" href="classviennacl_1_1matrix.html#adc76eef234678aba57478ab41b5880f1">00457</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< MatrixType1,
-<a name="l00458"></a>00458 MatrixType2,
-<a name="l00459"></a>00459 op_prod > & proxy)
-<a name="l00460"></a>00460 {
-<a name="l00461"></a>00461 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00462"></a>00462 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00463"></a>00463 }
-<a name="l00464"></a>00464
-<a name="l00465"></a>00465 <span class="comment">//this = A + B</span>
-<a name="l00466"></a><a class="code" href="classviennacl_1_1matrix.html#a3aaa450a353d0d7ff4bf89740a92a5c3">00466</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00467"></a>00467 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00468"></a>00468 op_add > & proxy)
-<a name="l00469"></a>00469 {
-<a name="l00470"></a>00470 <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00471"></a>00471 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00472"></a>00472 }
-<a name="l00473"></a>00473
-<a name="l00474"></a>00474 <span class="comment">//this = A - B</span>
-<a name="l00475"></a><a class="code" href="classviennacl_1_1matrix.html#aaa1fd1f887b588b66d3eae3a264b09cb">00475</a> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1matrix.html#aa609ee520223e208f4a39a78522865c3">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00476"></a>00476 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00477"></a>00477 op_sub > & proxy)
-<a name="l00478"></a>00478 {
-<a name="l00479"></a>00479 <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::sub</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00480"></a>00480 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00481"></a>00481 }
-<a name="l00482"></a>00482
-<a name="l00483"></a>00483
-<a name="l00485"></a><a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4">00485</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rows;}
-<a name="l00487"></a><a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a">00487</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & <a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _columns; }
-<a name="l00488"></a>00488
-<a name="l00490"></a><a class="code" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204">00490</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#ac8bb3912a3ce86b15842e79d0b421204" title="Resets all entries to zero.">clear</a>()
-<a name="l00491"></a>00491 {
-<a name="l00492"></a>00492 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a> = <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>() * <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>();
-<a name="l00493"></a>00493
-<a name="l00494"></a>00494 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00495"></a>00495
-<a name="l00496"></a>00496 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"clear"</span>);
-<a name="l00497"></a>00497 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(_elements, internal_size));
-<a name="l00498"></a>00498 }
-<a name="l00499"></a>00499
-<a name="l00500"></a>00500
-<a name="l00501"></a>00501 <span class="comment">//const unsigned int row_stride() const { return roundUpToNextMultiple<unsigned int>(columns(), ALIGNMENT); }</span>
-<a name="l00503"></a><a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3">00503</a> <span class="comment"></span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">F::internal_size1</a>(<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), ALIGNMENT); }
-<a name="l00505"></a><a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335">00505</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">F::internal_size2</a>(<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), ALIGNMENT); }
-<a name="l00507"></a><a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34">00507</a> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>() * <a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(); }
-<a name="l00508"></a>00508
-<a name="l00510"></a><a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c">00510</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _elements; }
-<a name="l00511"></a>00511
-<a name="l00512"></a>00512 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00513"></a>00513 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX>
-<a name="l00514"></a>00514 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00515"></a>00515 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix );
-<a name="l00516"></a>00516
-<a name="l00517"></a>00517 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2>
-<a name="l00518"></a>00518 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> std::vector< std::vector<SCALARTYPE2, A1>, A2> & cpu_matrix,
-<a name="l00519"></a>00519 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix );
-<a name="l00520"></a>00520
-<a name="l00521"></a>00521 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2>
-<a name="l00522"></a>00522 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">fast_copy</a>(SCALARTYPE2 * cpu_matrix_begin,
-<a name="l00523"></a>00523 SCALARTYPE2 * cpu_matrix_end,
-<a name="l00524"></a>00524 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00525"></a>00525
-<a name="l00526"></a>00526 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00527"></a>00527 <span class="preprocessor"></span> <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXf & cpu_matrix,
-<a name="l00528"></a>00528 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00529"></a>00529
-<a name="l00530"></a>00530 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXd & cpu_matrix,
-<a name="l00531"></a>00531 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00532"></a>00532 <span class="preprocessor"> #endif</span>
-<a name="l00533"></a>00533 <span class="preprocessor"></span>
-<a name="l00534"></a>00534 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00535"></a>00535 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> T>
-<a name="l00536"></a>00536 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> mtl::dense2D<SCALARTYPE2, T>& cpu_matrix,
-<a name="l00537"></a>00537 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a> & gpu_matrix);
-<a name="l00538"></a>00538 <span class="preprocessor"> #endif</span>
-<a name="l00539"></a>00539 <span class="preprocessor"></span><span class="preprocessor"> #else</span>
-<a name="l00540"></a>00540 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00541"></a>00541 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00542"></a>00542 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix );
-<a name="l00543"></a>00543
-<a name="l00544"></a>00544 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00545"></a>00545 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> std::vector< std::vector<SCALARTYPE2, A1>, A2> & cpu_matrix,
-<a name="l00546"></a>00546 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix );
-<a name="l00547"></a>00547
-<a name="l00548"></a>00548 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00549"></a>00549 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a482880bc796727f4dcb859a2ceb64c6d">fast_copy</a>(SCALARTYPE2 * cpu_matrix_begin,
-<a name="l00550"></a>00550 SCALARTYPE2 * cpu_matrix_end,
-<a name="l00551"></a>00551 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00552"></a>00552
-<a name="l00553"></a>00553 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00554"></a>00554 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00555"></a>00555 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXf & cpu_matrix,
-<a name="l00556"></a>00556 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<float, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00557"></a>00557
-<a name="l00558"></a>00558 <span class="keyword">template</span> <<span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00559"></a>00559 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> Eigen::MatrixXd & cpu_matrix,
-<a name="l00560"></a>00560 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<double, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00561"></a>00561 <span class="preprocessor"> #endif</span>
-<a name="l00562"></a>00562 <span class="preprocessor"></span>
-<a name="l00563"></a>00563 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00564"></a>00564 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE2, <span class="keyword">typename</span> T, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00565"></a>00565 <span class="keyword">friend</span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1matrix.html#a6d60b3ee25e9dec224c68f00f4a3a97f">copy</a>(<span class="keyword">const</span> mtl::dense2D<SCALARTYPE2, T>& cpu_matrix,
-<a name="l00566"></a>00566 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE2, F2, ALIGNMENT2></a> & gpu_matrix);
-<a name="l00567"></a>00567 <span class="preprocessor"> #endif</span>
-<a name="l00568"></a>00568 <span class="preprocessor"></span><span class="preprocessor"> #endif </span>
-<a name="l00569"></a>00569 <span class="preprocessor"></span>
-<a name="l00570"></a>00570 <span class="keyword">private</span>:
-<a name="l00571"></a>00571 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _rows;
-<a name="l00572"></a>00572 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> _columns;
-<a name="l00573"></a>00573 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> _elements;
-<a name="l00574"></a>00574 }; <span class="comment">//matrix</span>
-<a name="l00575"></a>00575
-<a name="l00581"></a>00581 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00582"></a><a class="code" href="namespaceviennacl.html#abc6cd55d2644b2c6b5f69cb733fb6f24">00582</a> std::ostream & operator<<(std::ostream & s, const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
-<a name="l00583"></a>00583 {
-<a name="l00584"></a>00584 std::vector<SCALARTYPE> tmp(gpu_matrix.internal_size());
-<a name="l00585"></a>00585 cl_int err;
-<a name="l00586"></a>00586 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#a8c301f0516a039dbac9b263be6e70815">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE) * gpu_matrix.internal_size(), &tmp[0], 0, NULL, NULL);
-<a name="l00587"></a>00587 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00588"></a>00588 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l00589"></a>00589
-<a name="l00590"></a>00590 s << <span class="stringliteral">"["</span> << gpu_matrix.size1() << <span class="stringliteral">","</span> << gpu_matrix.size2() << <span class="stringliteral">"]"</span>;
-<a name="l00591"></a>00591
-<a name="l00592"></a>00592 s << <span class="stringliteral">"("</span>;
-<a name="l00593"></a>00593 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00594"></a>00594 {
-<a name="l00595"></a>00595 s << <span class="stringliteral">"("</span>;
-<a name="l00596"></a>00596 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j)
-<a name="l00597"></a>00597 {
-<a name="l00598"></a>00598 s << tmp[ i * gpu_matrix.internal_size2() + j ];
-<a name="l00599"></a>00599 <span class="keywordflow">if</span> (j < gpu_matrix.size2() - 1)
-<a name="l00600"></a>00600 s << <span class="stringliteral">","</span>;
-<a name="l00601"></a>00601 }
-<a name="l00602"></a>00602 s << <span class="stringliteral">")"</span>;
-<a name="l00603"></a>00603 <span class="keywordflow">if</span> (i < gpu_matrix.size1() - 1)
-<a name="l00604"></a>00604 s << <span class="stringliteral">","</span>;
-<a name="l00605"></a>00605 }
-<a name="l00606"></a>00606 s << <span class="stringliteral">")"</span>;
-<a name="l00607"></a>00607 <span class="keywordflow">return</span> s;
-<a name="l00608"></a>00608 }
-<a name="l00609"></a>00609
-<a name="l00615"></a>00615 <span class="keyword">template</span><<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00616"></a><a class="code" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">00616</a> std::ostream & operator<<(std::ostream & s, const matrix_expression<LHS, RHS, OP> & expr)
-<a name="l00617"></a>00617 {
-<a name="l00618"></a>00618 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< typename tools::CONST_REMOVER<LHS>::ResultType</a> >::ResultType ScalarType;
-<a name="l00619"></a>00619
-<a name="l00620"></a>00620 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<ScalarType></a> temp = expr;
-<a name="l00621"></a>00621 s << temp;
-<a name="l00622"></a>00622 <span class="keywordflow">return</span> s;
-<a name="l00623"></a>00623 }
-<a name="l00624"></a>00624
-<a name="l00626"></a>00626 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00627"></a>00627 matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT>,
-<a name="l00628"></a>00628 <span class="keyword">const</span> matrix<SCALARTYPE, F, ALIGNMENT>,
-<a name="l00629"></a><a class="code" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">00629</a> op_trans> <a class="code" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c" title="Returns an expression template class representing a transposed matrix.">trans</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat)
-<a name="l00630"></a>00630 {
-<a name="l00631"></a>00631 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00632"></a>00632 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00633"></a>00633 op_trans>(mat, mat);
-<a name="l00634"></a>00634 }
-<a name="l00635"></a>00635
-<a name="l00636"></a>00636
-<a name="l00638"></a>00638
-<a name="l00639"></a>00639 <span class="comment">//</span>
-<a name="l00640"></a>00640 <span class="comment">//cpu to gpu, generic type:</span>
-<a name="l00641"></a>00641 <span class="comment">//</span>
-<a name="l00647"></a>00647 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00648"></a><a class="code" href="namespaceviennacl.html#a4bd43fae5bc2cdd71e384d1794527add">00648</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPU_MATRIX & cpu_matrix,
-<a name="l00649"></a>00649 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix )
-<a name="l00650"></a>00650 {
-<a name="l00651"></a>00651 gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(static_cast<unsigned int>(cpu_matrix.size1()),
-<a name="l00652"></a>00652 static_cast<unsigned int>(cpu_matrix.size2()), <span class="keyword">false</span>);
-<a name="l00653"></a>00653
-<a name="l00654"></a>00654 std::vector<SCALARTYPE> data(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00655"></a>00655 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00656"></a>00656 {
-<a name="l00657"></a>00657 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j)
-<a name="l00658"></a>00658 data[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())] = cpu_matrix(i,j);
-<a name="l00659"></a>00659 }
-<a name="l00660"></a>00660
-<a name="l00661"></a>00661 gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00662"></a>00662 }
-<a name="l00663"></a>00663
-<a name="l00664"></a>00664 <span class="comment">//</span>
-<a name="l00665"></a>00665 <span class="comment">//cpu to gpu, STL type:</span>
-<a name="l00666"></a>00666 <span class="comment">//</span>
-<a name="l00672"></a>00672 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00673"></a><a class="code" href="namespaceviennacl.html#a376734f00b48e1c773c82eb9290c1f08">00673</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix,
-<a name="l00674"></a>00674 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix )
-<a name="l00675"></a>00675 {
-<a name="l00676"></a>00676 gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a76ffc3a247bdd7e9a4225f14744c1f23" title="Resizes the matrix. Existing entries can be preserved, but.">resize</a>(static_cast<unsigned int>(cpu_matrix.size()),
-<a name="l00677"></a>00677 static_cast<unsigned int>(cpu_matrix[0].<a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>()),
-<a name="l00678"></a>00678 <span class="keyword">false</span>);
-<a name="l00679"></a>00679
-<a name="l00680"></a>00680 std::vector<SCALARTYPE> data(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00681"></a>00681 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00682"></a>00682 {
-<a name="l00683"></a>00683 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j)
-<a name="l00684"></a>00684 data[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())] = cpu_matrix[i][j];
-<a name="l00685"></a>00685 }
-<a name="l00686"></a>00686
-<a name="l00687"></a>00687 gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00688"></a>00688 }
-<a name="l00689"></a>00689
-<a name="l00690"></a>00690
-<a name="l00691"></a>00691 <span class="comment">//</span>
-<a name="l00692"></a>00692 <span class="comment">//cpu to gpu, another STL type:</span>
-<a name="l00693"></a>00693 <span class="comment">//</span>
-<a name="l00700"></a>00700 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00701"></a><a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">00701</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(SCALARTYPE * cpu_matrix_begin,
-<a name="l00702"></a>00702 SCALARTYPE * cpu_matrix_end,
-<a name="l00703"></a>00703 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix)
-<a name="l00704"></a>00704 {
-<a name="l00705"></a>00705 gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE,
-<a name="l00706"></a>00706 <span class="keyword">sizeof</span>(SCALARTYPE) * (cpu_matrix_end - cpu_matrix_begin),
-<a name="l00707"></a>00707 cpu_matrix_begin);
-<a name="l00708"></a>00708 }
-<a name="l00709"></a>00709
-<a name="l00710"></a>00710
-<a name="l00711"></a>00711 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00712"></a>00712 <span class="preprocessor"></span>
-<a name="l00717"></a>00717 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00718"></a>00718 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> Eigen::MatrixXf & cpu_matrix,
-<a name="l00719"></a>00719 matrix<float, F, ALIGNMENT> & gpu_matrix)
-<a name="l00720"></a>00720 {
-<a name="l00721"></a>00721 gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
-<a name="l00722"></a>00722 static_cast<unsigned int>(cpu_matrix.cols()),
-<a name="l00723"></a>00723 <span class="keyword">false</span>);
-<a name="l00724"></a>00724
-<a name="l00725"></a>00725 std::vector<float> data(gpu_matrix.internal_size());
-<a name="l00726"></a>00726 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00727"></a>00727 {
-<a name="l00728"></a>00728 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j)
-<a name="l00729"></a>00729 data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
-<a name="l00730"></a>00730 }
-<a name="l00731"></a>00731
-<a name="l00732"></a>00732 gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00733"></a>00733 }
-<a name="l00734"></a>00734
-<a name="l00740"></a>00740 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00741"></a>00741 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> Eigen::MatrixXd & cpu_matrix,
-<a name="l00742"></a>00742 matrix<double, F, ALIGNMENT> & gpu_matrix)
-<a name="l00743"></a>00743 {
-<a name="l00744"></a>00744 gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
-<a name="l00745"></a>00745 static_cast<unsigned int>(cpu_matrix.cols()),
-<a name="l00746"></a>00746 <span class="keyword">false</span>);
-<a name="l00747"></a>00747
-<a name="l00748"></a>00748 std::vector<double> data(gpu_matrix.internal_size());
-<a name="l00749"></a>00749 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00750"></a>00750 {
-<a name="l00751"></a>00751 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j)
-<a name="l00752"></a>00752 data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
-<a name="l00753"></a>00753 }
-<a name="l00754"></a>00754
-<a name="l00755"></a>00755 gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00756"></a>00756 }
-<a name="l00757"></a>00757 <span class="preprocessor"> #endif</span>
-<a name="l00758"></a>00758 <span class="preprocessor"></span>
-<a name="l00759"></a>00759 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00760"></a>00760 <span class="preprocessor"></span>
-<a name="l00765"></a>00765 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00766"></a>00766 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> mtl::dense2D<SCALARTYPE, T>& cpu_matrix,
-<a name="l00767"></a>00767 matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
-<a name="l00768"></a>00768 {
-<a name="l00769"></a>00769 gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.num_rows()),
-<a name="l00770"></a>00770 static_cast<unsigned int>(cpu_matrix.num_cols()),
-<a name="l00771"></a>00771 <span class="keyword">false</span>);
-<a name="l00772"></a>00772
-<a name="l00773"></a>00773 std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
-<a name="l00774"></a>00774 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.size1(); ++i)
-<a name="l00775"></a>00775 {
-<a name="l00776"></a>00776 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.size2(); ++j)
-<a name="l00777"></a>00777 data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix[i][j];
-<a name="l00778"></a>00778 }
-<a name="l00779"></a>00779
-<a name="l00780"></a>00780 gpu_matrix._elements = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, data);
-<a name="l00781"></a>00781 }
-<a name="l00782"></a>00782 <span class="preprocessor"> #endif</span>
-<a name="l00783"></a>00783 <span class="preprocessor"></span>
-<a name="l00784"></a>00784
-<a name="l00785"></a>00785
-<a name="l00786"></a>00786
-<a name="l00787"></a>00787 <span class="comment">//</span>
-<a name="l00788"></a>00788 <span class="comment">//gpu to cpu, generic type</span>
-<a name="l00789"></a>00789 <span class="comment">//</span>
-<a name="l00795"></a>00795 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_MATRIX, <span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00796"></a><a class="code" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">00796</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix,
-<a name="l00797"></a>00797 CPU_MATRIX & cpu_matrix )
-<a name="l00798"></a>00798 {
-<a name="l00799"></a>00799 <span class="keywordflow">if</span> ( (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() > 0) && (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() > 0) )
-<a name="l00800"></a>00800 {
-<a name="l00801"></a>00801 std::vector<SCALARTYPE> temp_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00802"></a>00802 cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l00803"></a>00803 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00804"></a>00804
-<a name="l00805"></a>00805 <span class="comment">//now copy entries to cpu_matrix:</span>
-<a name="l00806"></a>00806 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00807"></a>00807 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j)
-<a name="l00808"></a>00808 cpu_matrix(i,j) = temp_buffer[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())];
-<a name="l00809"></a>00809 }
-<a name="l00810"></a>00810 }
-<a name="l00811"></a>00811
-<a name="l00812"></a>00812 <span class="comment">//gpu to cpu, STL type</span>
-<a name="l00818"></a>00818 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00819"></a><a class="code" href="namespaceviennacl.html#a72359f3759c0067ac956d01c36651f9a">00819</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix,
-<a name="l00820"></a>00820 std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix)
-<a name="l00821"></a>00821 {
-<a name="l00822"></a>00822 <span class="keywordflow">if</span> ( (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() > 0) && (gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() > 0)
-<a name="l00823"></a>00823 && (cpu_matrix.size() >= gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>()) && (cpu_matrix[0].<a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>() >= gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>()))
-<a name="l00824"></a>00824 {
-<a name="l00825"></a>00825 std::vector<SCALARTYPE> temp_buffer(gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00826"></a>00826 cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l00827"></a>00827 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00828"></a>00828
-<a name="l00829"></a>00829 <span class="comment">//now copy entries to cpu_matrix:</span>
-<a name="l00830"></a>00830 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); ++i)
-<a name="l00831"></a>00831 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); ++j)
-<a name="l00832"></a>00832 cpu_matrix[i][j] = temp_buffer[F::mem_index(i, j, gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>())];
-<a name="l00833"></a>00833 }
-<a name="l00834"></a>00834 }
-<a name="l00835"></a>00835
-<a name="l00836"></a>00836 <span class="comment">//gpu to cpu, STL type</span>
-<a name="l00842"></a>00842 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00843"></a><a class="code" href="namespaceviennacl.html#a2fae23064f21ff285672845e82545fd2">00843</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & gpu_matrix,
-<a name="l00844"></a>00844 SCALARTYPE * cpu_matrix_begin)
-<a name="l00845"></a>00845 {
-<a name="l00846"></a>00846 cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l00847"></a>00847 gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(),
-<a name="l00848"></a>00848 CL_TRUE, 0,
-<a name="l00849"></a>00849 <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_matrix.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(),
-<a name="l00850"></a>00850 cpu_matrix_begin, 0, NULL, NULL);
-<a name="l00851"></a>00851 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00852"></a>00852 }
-<a name="l00853"></a>00853
-<a name="l00854"></a>00854
-<a name="l00855"></a>00855
-<a name="l00856"></a>00856
-<a name="l00857"></a>00857
-<a name="l00858"></a>00858
-<a name="l00859"></a>00859
-<a name="l00860"></a>00860
-<a name="l00861"></a>00861
-<a name="l00862"></a>00862 <span class="comment">// outer_prod(v1, v2) * val;</span>
-<a name="l00863"></a>00863 <span class="keyword">template</span><<span class="keyword">typename</span> CPU_SCALAR, <span class="keyword">typename</span> SCALARTYPE,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00864"></a>00864 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00865"></a>00865 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00866"></a>00866 op_prod>,
-<a name="l00867"></a>00867 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00868"></a><a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">00868</a> op_prod> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00869"></a>00869 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00870"></a>00870 op_prod> & proxy,
-<a name="l00871"></a>00871 CPU_SCALAR val)
-<a name="l00872"></a>00872 {
-<a name="l00873"></a>00873 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00874"></a>00874 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00875"></a>00875 op_prod>,
-<a name="l00876"></a>00876 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00877"></a>00877 op_prod>(proxy, <span class="keyword">static_cast<</span>SCALARTYPE<span class="keyword">></span>(val));
-<a name="l00878"></a>00878 }
-<a name="l00879"></a>00879
-<a name="l00880"></a>00880 <span class="comment">// val * outer_prod(v1, v2);</span>
-<a name="l00881"></a>00881 <span class="keyword">template</span> <<span class="keyword">typename</span> CPU_SCALAR, <span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA2>
-<a name="l00882"></a>00882 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00883"></a>00883 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00884"></a>00884 op_prod>,
-<a name="l00885"></a>00885 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00886"></a><a class="code" href="namespaceviennacl.html#ae29e41dc09ce774a0082eb52bdcb81e7">00886</a> op_prod> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a>(CPU_SCALAR val,
-<a name="l00887"></a>00887 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00888"></a>00888 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00889"></a>00889 op_prod> <span class="keyword">const</span> & proxy)
-<a name="l00890"></a>00890 {
-<a name="l00891"></a>00891 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00892"></a>00892 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00893"></a>00893 op_prod>,
-<a name="l00894"></a>00894 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00895"></a>00895 op_prod>(proxy, <span class="keyword">static_cast<</span>SCALARTYPE<span class="keyword">></span>(val));
-<a name="l00896"></a>00896 }
-<a name="l00897"></a>00897
-<a name="l00898"></a>00898
-<a name="l00899"></a>00899
-<a name="l00900"></a>00900 } <span class="comment">//namespace viennacl</span>
-<a name="l00901"></a>00901
-<a name="l00902"></a>00902 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__kernels_8h.html b/doc/doxygen/html/matrix__col__kernels_8h.html
deleted file mode 100644
index 34725b1..0000000
--- a/doc/doxygen/html/matrix__col__kernels_8h.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__col__source_8h_source.html">viennacl/linalg/kernels/matrix_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__kernels_8h_source.html b/doc/doxygen/html/matrix__col__kernels_8h_source.html
deleted file mode 100644
index 7ed103f..0000000
--- a/doc/doxygen/html/matrix__col__kernels_8h_source.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__col__source_8h.html">viennacl/linalg/kernels/matrix_col_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_col;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">00022</a> <span class="keyword">struct </span>matrix_col<float, 16>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_col_16"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00052"></a>00052 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>);
-<a name="l00053"></a>00053 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>);
-<a name="l00054"></a>00054 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>);
-<a name="l00055"></a>00055 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>);
-<a name="l00056"></a>00056 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00057"></a>00057 std::string prog_name = program_name();
-<a name="l00058"></a>00058 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00060"></a>00060 <span class="preprocessor"> #endif</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00062"></a>00062 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00063"></a>00063 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00064"></a>00064 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00065"></a>00065 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00066"></a>00066 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00067"></a>00067 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00068"></a>00068 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00069"></a>00069 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00070"></a>00070 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00074"></a>00074 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00075"></a>00075 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00076"></a>00076 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00077"></a>00077 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00078"></a>00078 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00079"></a>00079 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00080"></a>00080 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00081"></a>00081 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00082"></a>00082 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00083"></a>00083 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00084"></a>00084 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00085"></a>00085 } <span class="comment">//if</span>
-<a name="l00086"></a>00086 } <span class="comment">//init</span>
-<a name="l00087"></a>00087 }; <span class="comment">// struct</span>
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keyword">template</span> <>
-<a name="l00090"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">00090</a> <span class="keyword">struct </span>matrix_col<float, 1>
-<a name="l00091"></a>00091 {
-<a name="l00092"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00092</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_col_1"</span>;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00096</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00099"></a>00099 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00100"></a>00100 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 std::string source;
-<a name="l00104"></a>00104 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00105"></a>00105 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>);
-<a name="l00106"></a>00106 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00107"></a>00107 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>);
-<a name="l00108"></a>00108 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>);
-<a name="l00109"></a>00109 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>);
-<a name="l00110"></a>00110 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00111"></a>00111 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>);
-<a name="l00112"></a>00112 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>);
-<a name="l00113"></a>00113 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>);
-<a name="l00114"></a>00114 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00115"></a>00115 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>);
-<a name="l00116"></a>00116 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00117"></a>00117 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00118"></a>00118 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>);
-<a name="l00119"></a>00119 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00120"></a>00120 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>);
-<a name="l00121"></a>00121 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>);
-<a name="l00122"></a>00122 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>);
-<a name="l00123"></a>00123 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>);
-<a name="l00124"></a>00124 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00125"></a>00125 std::string prog_name = program_name();
-<a name="l00126"></a>00126 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00128"></a>00128 <span class="preprocessor"> #endif</span>
-<a name="l00129"></a>00129 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00130"></a>00130 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00131"></a>00131 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00133"></a>00133 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00136"></a>00136 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00137"></a>00137 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00138"></a>00138 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00139"></a>00139 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00140"></a>00140 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00141"></a>00141 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00142"></a>00142 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00143"></a>00143 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00144"></a>00144 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00145"></a>00145 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00146"></a>00146 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00147"></a>00147 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00148"></a>00148 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00149"></a>00149 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00150"></a>00150 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00151"></a>00151 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00152"></a>00152 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00153"></a>00153 } <span class="comment">//if</span>
-<a name="l00154"></a>00154 } <span class="comment">//init</span>
-<a name="l00155"></a>00155 }; <span class="comment">// struct</span>
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158
-<a name="l00160"></a>00160 <span class="keyword">template</span> <>
-<a name="l00161"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">00161</a> <span class="keyword">struct </span>matrix_col<double, 16>
-<a name="l00162"></a>00162 {
-<a name="l00163"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00163</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_col_16"</span>;
-<a name="l00166"></a>00166 }
-<a name="l00167"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00167</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00170"></a>00170 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00171"></a>00171 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00172"></a>00172 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 std::string source;
-<a name="l00175"></a>00175 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00176"></a>00176 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00177"></a>00177 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>, fp64_ext));
-<a name="l00178"></a>00178 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00179"></a>00179 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00180"></a>00180 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>, fp64_ext));
-<a name="l00181"></a>00181 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>, fp64_ext));
-<a name="l00182"></a>00182 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00183"></a>00183 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>, fp64_ext));
-<a name="l00184"></a>00184 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>, fp64_ext));
-<a name="l00185"></a>00185 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>, fp64_ext));
-<a name="l00186"></a>00186 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00187"></a>00187 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>, fp64_ext));
-<a name="l00188"></a>00188 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00189"></a>00189 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00190"></a>00190 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>, fp64_ext));
-<a name="l00191"></a>00191 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00192"></a>00192 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00193"></a>00193 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>, fp64_ext));
-<a name="l00194"></a>00194 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00195"></a>00195 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>, fp64_ext));
-<a name="l00196"></a>00196 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00197"></a>00197 std::string prog_name = program_name();
-<a name="l00198"></a>00198 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00199"></a>00199 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00200"></a>00200 <span class="preprocessor"> #endif</span>
-<a name="l00201"></a>00201 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00202"></a>00202 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00203"></a>00203 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00204"></a>00204 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00205"></a>00205 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00206"></a>00206 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00207"></a>00207 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00208"></a>00208 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00209"></a>00209 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00210"></a>00210 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00211"></a>00211 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00212"></a>00212 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00213"></a>00213 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00214"></a>00214 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00216"></a>00216 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00217"></a>00217 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00218"></a>00218 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00219"></a>00219 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00220"></a>00220 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00221"></a>00221 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00222"></a>00222 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00223"></a>00223 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00224"></a>00224 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00225"></a>00225 } <span class="comment">//if</span>
-<a name="l00226"></a>00226 } <span class="comment">//init</span>
-<a name="l00227"></a>00227 }; <span class="comment">// struct</span>
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <span class="keyword">template</span> <>
-<a name="l00230"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">00230</a> <span class="keyword">struct </span>matrix_col<double, 1>
-<a name="l00231"></a>00231 {
-<a name="l00232"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00232</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_col_1"</span>;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00236</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00239"></a>00239 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00240"></a>00240 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00241"></a>00241 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 std::string source;
-<a name="l00244"></a>00244 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00245"></a>00245 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00246"></a>00246 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a>, fp64_ext));
-<a name="l00247"></a>00247 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00248"></a>00248 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00249"></a>00249 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a>, fp64_ext));
-<a name="l00250"></a>00250 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a>, fp64_ext));
-<a name="l00251"></a>00251 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00252"></a>00252 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a>, fp64_ext));
-<a name="l00253"></a>00253 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a>, fp64_ext));
-<a name="l00254"></a>00254 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a>, fp64_ext));
-<a name="l00255"></a>00255 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00256"></a>00256 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a>, fp64_ext));
-<a name="l00257"></a>00257 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00258"></a>00258 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00259"></a>00259 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a>, fp64_ext));
-<a name="l00260"></a>00260 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00261"></a>00261 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00262"></a>00262 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a>, fp64_ext));
-<a name="l00263"></a>00263 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00264"></a>00264 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a>, fp64_ext));
-<a name="l00265"></a>00265 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00266"></a>00266 std::string prog_name = program_name();
-<a name="l00267"></a>00267 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00268"></a>00268 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00269"></a>00269 <span class="preprocessor"> #endif</span>
-<a name="l00270"></a>00270 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00271"></a>00271 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00272"></a>00272 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00273"></a>00273 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00274"></a>00274 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00275"></a>00275 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00276"></a>00276 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00277"></a>00277 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00278"></a>00278 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00279"></a>00279 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00280"></a>00280 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00281"></a>00281 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00282"></a>00282 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00283"></a>00283 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00284"></a>00284 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00285"></a>00285 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00286"></a>00286 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00287"></a>00287 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00288"></a>00288 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00289"></a>00289 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00290"></a>00290 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00291"></a>00291 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00292"></a>00292 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00293"></a>00293 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00294"></a>00294 } <span class="comment">//if</span>
-<a name="l00295"></a>00295 } <span class="comment">//init</span>
-<a name="l00296"></a>00296 }; <span class="comment">// struct</span>
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298
-<a name="l00299"></a>00299 } <span class="comment">//namespace kernels</span>
-<a name="l00300"></a>00300 } <span class="comment">//namespace linalg</span>
-<a name="l00301"></a>00301 } <span class="comment">//namespace viennacl</span>
-<a name="l00302"></a>00302 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__source_8h.html b/doc/doxygen/html/matrix__col__source_8h.html
deleted file mode 100644
index 6c13177..0000000
--- a/doc/doxygen/html/matrix__col__source_8h.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__col__source_8h_source.html b/doc/doxygen/html/matrix__col__source_8h_source.html
deleted file mode 100644
index ff19a12..0000000
--- a/doc/doxygen/html/matrix__col__source_8h_source.html
+++ /dev/null
@@ -1,441 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_col_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"{\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" {\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" }\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"}\n"</span>
-<a name="l00028"></a>00028 ; <span class="comment">//matrix_col_align1_unit_lower_triangular_substitute_inplace</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">00030</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> =
-<a name="l00031"></a>00031 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"{ \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" vec1[i] -= vec2[i];\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_col_align1_inplace_sub</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> =
-<a name="l00042"></a>00042 <span class="stringliteral">"__kernel void lower_triangular_substitute_inplace(\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"{\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" {\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" vector[row] /= matrix[row+row*matrix_internal_rows];\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" }\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"}\n"</span>
-<a name="l00062"></a>00062 ; <span class="comment">//matrix_col_align1_lower_triangular_substitute_inplace</span>
-<a name="l00063"></a>00063
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">00064</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> =
-<a name="l00065"></a>00065 <span class="stringliteral">"__kernel void trans_vec_mul(\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">"{ \n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">" //row and col indicate indices within transposed matrix\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">" {\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" float dot_prod2 = 0.0f;\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_rows; ++col)\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" dot_prod2 += matrix[row * matrix_internal_rows + col] * vector[col];\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" result[row] = dot_prod2;\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" }\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"}\n"</span>
-<a name="l00083"></a>00083 ; <span class="comment">//matrix_col_align1_trans_vec_mul</span>
-<a name="l00084"></a>00084
-<a name="l00085"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">00085</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> =
-<a name="l00086"></a>00086 <span class="stringliteral">"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"__kernel void rank1_update(\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" __global float * matrix,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __global const float * vector1, \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" __global const float * vector2) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"{ \n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" float tmp;\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" for (unsigned int row= get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" {\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" tmp = vector1[row];\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" matrix[row + col * matrix_internal_rows] += tmp * vector2[col];\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" }\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"}\n"</span>
-<a name="l00104"></a>00104 ; <span class="comment">//matrix_col_align1_rank1_update</span>
-<a name="l00105"></a>00105
-<a name="l00106"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">00106</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> =
-<a name="l00107"></a>00107 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" __global const float * vec2, \n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" unsigned int size)\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"{ \n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"}\n"</span>
-<a name="l00116"></a>00116 ; <span class="comment">//matrix_col_align1_sub</span>
-<a name="l00117"></a>00117
-<a name="l00118"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">00118</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> =
-<a name="l00119"></a>00119 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">"{ \n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" { \n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">" \n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" vector[elim] -= temp * matrix[row + elim * matrix_internal_rows]; \n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" } \n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"}\n"</span>
-<a name="l00140"></a>00140 ; <span class="comment">//matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</span>
-<a name="l00141"></a>00141
-<a name="l00142"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">00142</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> =
-<a name="l00143"></a>00143 <span class="stringliteral">"__kernel void lu_factorize(\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global float * matrix,\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int matrix_internal_cols) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">"{ \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" for (unsigned int i=1; i<matrix_rows; ++i)\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" {\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" for (unsigned int k=0; k<i; ++k)\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" {\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">" matrix[i + k*matrix_internal_rows] /= matrix[k + k*matrix_internal_rows];\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" temp = matrix[i + k*matrix_internal_rows];\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" \n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" //parallel subtraction:\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" for (unsigned int j=k+1 + get_global_id(0); j<matrix_cols; j += get_global_size(0))\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" matrix[i + j*matrix_internal_rows] -= temp * matrix[k + j*matrix_internal_rows];\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" }\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" }\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">"} \n"</span>
-<a name="l00166"></a>00166 ; <span class="comment">//matrix_col_align1_lu_factorize</span>
-<a name="l00167"></a>00167
-<a name="l00168"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">00168</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> =
-<a name="l00169"></a>00169 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" __global const float * vec2, \n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">"}\n"</span>
-<a name="l00178"></a>00178 ; <span class="comment">//matrix_col_align1_add</span>
-<a name="l00179"></a>00179
-<a name="l00180"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">00180</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> =
-<a name="l00181"></a>00181 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"{ \n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" {\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" float dot_prod = 0.0f;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" dot_prod += matrix[row + col*matrix_internal_rows] * vector[col];\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" result[row] = dot_prod;\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" }\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"}\n"</span>
-<a name="l00198"></a>00198 ; <span class="comment">//matrix_col_align1_vec_mul</span>
-<a name="l00199"></a>00199
-<a name="l00200"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">00200</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> =
-<a name="l00201"></a>00201 <span class="stringliteral">"__kernel void trans_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">"{\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" {\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" vector[row] /= matrix[row+row*matrix_internal_rows];\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">" vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" }\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">"}\n"</span>
-<a name="l00221"></a>00221 ; <span class="comment">//matrix_col_align1_trans_lower_triangular_substitute_inplace</span>
-<a name="l00222"></a>00222
-<a name="l00223"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">00223</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> =
-<a name="l00224"></a>00224 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"{ \n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" vec[i] /= factor;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">"}\n"</span>
-<a name="l00233"></a>00233 ; <span class="comment">//matrix_col_align1_inplace_divide</span>
-<a name="l00234"></a>00234
-<a name="l00235"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">00235</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> =
-<a name="l00236"></a>00236 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">"__kernel void trans_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"{ \n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" { \n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" if (get_global_id(0) == 0) \n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" vector[row] /= matrix[row + row*matrix_internal_rows]; \n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" \n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" vector[elim] -= temp * matrix[row + elim * matrix_internal_rows]; \n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" } \n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">" \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">"}\n"</span>
-<a name="l00260"></a>00260 ; <span class="comment">//matrix_col_align1_trans_upper_triangular_substitute_inplace</span>
-<a name="l00261"></a>00261
-<a name="l00262"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">00262</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> =
-<a name="l00263"></a>00263 <span class="stringliteral">"__kernel void unit_upper_triangular_substitute_inplace( \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">"{ \n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00272"></a>00272 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00273"></a>00273 <span class="stringliteral">" { \n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">" \n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" vector[elim] -= temp * matrix[elim + row * matrix_internal_rows]; \n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">" } \n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">" \n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">"}\n"</span>
-<a name="l00283"></a>00283 ; <span class="comment">//matrix_col_align1_unit_upper_triangular_substitute_inplace</span>
-<a name="l00284"></a>00284
-<a name="l00285"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">00285</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> =
-<a name="l00286"></a>00286 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"{ \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">" vec1[i] += vec2[i];\n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">"}\n"</span>
-<a name="l00294"></a>00294 ; <span class="comment">//matrix_col_align1_inplace_add</span>
-<a name="l00295"></a>00295
-<a name="l00296"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">00296</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> =
-<a name="l00297"></a>00297 <span class="stringliteral">"\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00303"></a>00303 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00304"></a>00304 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00305"></a>00305 <span class="stringliteral">"{\n"</span>
-<a name="l00306"></a>00306 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">" {\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">"\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">"\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">" vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" }\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">"}\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">"\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">"\n"</span>
-<a name="l00319"></a>00319 ; <span class="comment">//matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</span>
-<a name="l00320"></a>00320
-<a name="l00321"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">00321</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> =
-<a name="l00322"></a>00322 <span class="stringliteral">"__kernel void scaled_rank1_update(\n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" __global float * matrix,\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">" float val,\n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">" __global const float * vector1, \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">" __global const float * vector2) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">"{ \n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">" float tmp;\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">" {\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">" tmp = val * vector1[row];\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">" matrix[row + col*matrix_internal_rows] += tmp * vector2[col];\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">" }\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"}\n"</span>
-<a name="l00340"></a>00340 ; <span class="comment">//matrix_col_align1_scaled_rank1_update</span>
-<a name="l00341"></a>00341
-<a name="l00342"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">00342</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> =
-<a name="l00343"></a>00343 <span class="stringliteral">"__kernel void clear(\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"{ \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" vec[i] = 0;\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">"}\n"</span>
-<a name="l00350"></a>00350 ; <span class="comment">//matrix_col_align1_clear</span>
-<a name="l00351"></a>00351
-<a name="l00352"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">00352</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> =
-<a name="l00353"></a>00353 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">" float factor, \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"{ \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"}\n"</span>
-<a name="l00361"></a>00361 ; <span class="comment">//matrix_col_align1_cpu_inplace_mult</span>
-<a name="l00362"></a>00362
-<a name="l00363"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">00363</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> =
-<a name="l00364"></a>00364 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">" __global const float * fac, \n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">"{ \n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">"}\n"</span>
-<a name="l00373"></a>00373 ; <span class="comment">//matrix_col_align1_inplace_mult</span>
-<a name="l00374"></a>00374
-<a name="l00375"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">00375</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> =
-<a name="l00376"></a>00376 <span class="stringliteral">"__kernel void upper_triangular_substitute_inplace( \n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"{ \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">" { \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">" if (get_global_id(0) == 0) \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">" vector[row] /= matrix[row + row*matrix_internal_rows]; \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">" vector[elim] -= temp * matrix[elim + row * matrix_internal_rows]; \n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">" } \n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">" \n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">"}\n"</span>
-<a name="l00399"></a>00399 ; <span class="comment">//matrix_col_align1_upper_triangular_substitute_inplace</span>
-<a name="l00400"></a>00400
-<a name="l00401"></a>00401 } <span class="comment">//namespace kernels</span>
-<a name="l00402"></a>00402 } <span class="comment">//namespace linalg</span>
-<a name="l00403"></a>00403 } <span class="comment">//namespace viennacl</span>
-<a name="l00404"></a>00404 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp.html b/doc/doxygen/html/matrix__kernel__class__deducer_8hpp.html
deleted file mode 100644
index 91d1af2..0000000
--- a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix.
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__kernel__class__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix. <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp_source.html b/doc/doxygen/html/matrix__kernel__class__deducer_8hpp_source.html
deleted file mode 100644
index 2f3ed6d..0000000
--- a/doc/doxygen/html/matrix__kernel__class__deducer_8hpp_source.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_kernel_class_deducer.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__kernel__class__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__col__kernels_8h.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="matrix__row__kernels_8h.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="preprocessor">#include <vector></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <map></span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>viennacl
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>tools
-<a name="l00035"></a>00035 {
-<a name="l00037"></a>00037 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1>
-<a name="l00038"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">00038</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">MATRIX_KERNEL_CLASS_DEDUCER</a>
-<a name="l00039"></a>00039 {};
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00042"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">00042</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">MATRIX_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00043"></a>00043 {
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">00044</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_row<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00045"></a>00045 };
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00048"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">00048</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">MATRIX_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00049"></a>00049 {
-<a name="l00050"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">00050</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_col<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00051"></a>00051 };
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__market_8hpp.html b/doc/doxygen/html/matrix__market_8hpp.html
deleted file mode 100644
index 8d99a4d..0000000
--- a/doc/doxygen/html/matrix__market_8hpp.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>A reader and writer for the matrix market format is implemented here.
-<a href="#_details">More...</a></p>
-<code>#include <algorithm></code><br/>
-<code>#include <string></code><br/>
-<code>#include <iostream></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-<code>#include <cctype></code><br/>
-<code>#include "<a class="el" href="adapter_8hpp_source.html">viennacl/tools/adapter.hpp</a>"</code><br/>
-
-<p><a href="matrix__market_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">read_matrix_market_file_impl</a> (MatrixType &mat, const char *file, long index_base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse or dense matrix from a file (MatrixMarket format). <a href="#a220e9ad28f8fd26740c4661ca2bfabdd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280">read_matrix_market_file</a> (MatrixType &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse matrix from a file (MatrixMarket format). <a href="#afc8f719833b923e3e33bf29da94f9280"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">read_matrix_market_file</a> (MatrixType &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a9fb88f9c5737bb5e1231782f6f4d6558">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a0540c43b2f513a6c8ea30fb077a08e48">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a> (MatrixType const &mat, const char *file, long index_base)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a47025d215b1eb3d9e965f2bf772b3534">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a68425e89c32e2e221555411f08e3a271">write_matrix_market_file</a> (MatrixType const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes a sparse matrix to a file (MatrixMarket format). <a href="#a68425e89c32e2e221555411f08e3a271"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A reader and writer for the matrix market format is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__market_8hpp_source.html b/doc/doxygen/html/matrix__market_8hpp_source.html
deleted file mode 100644
index 1aa887d..0000000
--- a/doc/doxygen/html/matrix__market_8hpp_source.html
+++ /dev/null
@@ -1,423 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/matrix_market.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__market_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_MARKET_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_MARKET_HPP_</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <algorithm></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <string></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <iostream></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <fstream></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <sstream></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include <cctype></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="adapter_8hpp.html" title="Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int...">viennacl/tools/adapter.hpp</a>"</span>
-<a name="l00032"></a>00032
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>viennacl
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="keyword">namespace </span>io
-<a name="l00036"></a>00036 {
-<a name="l00037"></a>00037 <span class="comment">//helper</span>
-<a name="l00038"></a>00038 <span class="keyword">namespace</span>
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keywordtype">void</span> trim(<span class="keywordtype">char</span> * buffer, <span class="keywordtype">long</span> max_size)
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 <span class="comment">//trim at beginning of string</span>
-<a name="l00043"></a>00043 <span class="keywordtype">long</span> start = 0;
-<a name="l00044"></a>00044 <span class="keywordflow">for</span> (<span class="keywordtype">long</span> i=0; i<max_size; ++i)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="keywordflow">if</span> (buffer[i] == <span class="charliteral">' '</span>)
-<a name="l00047"></a>00047 ++start;
-<a name="l00048"></a>00048 <span class="keywordflow">else</span>
-<a name="l00049"></a>00049 <span class="keywordflow">break</span>;
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="comment">//trim at end of string</span>
-<a name="l00053"></a>00053 <span class="keywordtype">long</span> stop = start;
-<a name="l00054"></a>00054 <span class="keywordflow">for</span> (<span class="keywordtype">long</span> i=stop; i<max_size; ++i)
-<a name="l00055"></a>00055 {
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (buffer[i] == 0) <span class="comment">//end of string</span>
-<a name="l00057"></a>00057 <span class="keywordflow">break</span>;
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (buffer[i] != <span class="charliteral">' '</span>)
-<a name="l00060"></a>00060 stop = i;
-<a name="l00061"></a>00061 }
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keywordflow">for</span> (<span class="keywordtype">long</span> i=0; i<=stop - start; ++i)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 buffer[i] = buffer[start + i];
-<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (buffer[0] != <span class="charliteral">' '</span>)
-<a name="l00069"></a>00069 buffer[stop - start + 1] = 0; <span class="comment">//terminate string</span>
-<a name="l00070"></a>00070 <span class="keywordflow">else</span>
-<a name="l00071"></a>00071 buffer[0] = 0;
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 std::string tolower(std::string & s)
-<a name="l00075"></a>00075 {
-<a name="l00076"></a>00076 std::transform(s.begin(), s.end(), s.begin(), static_cast < int(*)(int) > (std::tolower));
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> s;
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00081"></a>00081
-<a name="l00082"></a>00082 } <span class="comment">//namespace </span>
-<a name="l00083"></a>00083
-<a name="l00085"></a>00085
-<a name="l00094"></a>00094 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00095"></a><a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">00095</a> <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(MatrixType & mat,
-<a name="l00096"></a>00096 <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00097"></a>00097 <span class="keywordtype">long</span> index_base)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 std::cout << <span class="stringliteral">"Reading matrix market file"</span> << std::endl;
-<a name="l00100"></a>00100 <span class="keywordtype">char</span> buffer[1025];
-<a name="l00101"></a>00101 std::ifstream reader(file);
-<a name="l00102"></a>00102 std::string token;
-<a name="l00103"></a>00103 <span class="keywordtype">long</span> linenum = 0;
-<a name="l00104"></a>00104 <span class="keywordtype">bool</span> symmetric = <span class="keyword">false</span>;
-<a name="l00105"></a>00105 <span class="keywordtype">bool</span> dense_format = <span class="keyword">false</span>;
-<a name="l00106"></a>00106 <span class="keywordtype">bool</span> is_header = <span class="keyword">true</span>;
-<a name="l00107"></a>00107 <span class="keywordtype">long</span> cur_row = 0;
-<a name="l00108"></a>00108 <span class="keywordtype">long</span> cur_col = 0;
-<a name="l00109"></a>00109 <span class="keywordtype">long</span> valid_entries = 0;
-<a name="l00110"></a>00110 <span class="keywordtype">long</span> nnz = 0;
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (!reader){
-<a name="l00114"></a>00114 std::cerr << <span class="stringliteral">"ViennaCL: Matrix Market Reader: Cannot open file "</span> << file << std::endl;
-<a name="l00115"></a>00115 <span class="keywordflow">return</span> 0;
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="keywordflow">while</span> (reader.good())
-<a name="l00119"></a>00119 {
-<a name="l00120"></a>00120 <span class="comment">// get a non-empty line</span>
-<a name="l00121"></a>00121 <span class="keywordflow">do</span>
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 reader.getline(buffer, 1024);
-<a name="l00124"></a>00124 ++linenum;
-<a name="l00125"></a>00125 trim(buffer, 1024);
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127 <span class="keywordflow">while</span> (reader.good() && buffer[0] == 0);
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (buffer[0] == <span class="charliteral">'%'</span>)
-<a name="l00130"></a>00130 {
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (buffer[1] == <span class="charliteral">'%'</span>)
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 <span class="comment">//parse header:</span>
-<a name="l00134"></a>00134 std::stringstream line(std::string(buffer + 2));
-<a name="l00135"></a>00135 line >> token;
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"matrixmarket"</span>)
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": Expected 'MatrixMarket', got '"</span> << token << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00139"></a>00139 <span class="keywordflow">return</span> 0;
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 line >> token;
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"matrix"</span>)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": Expected 'matrix', got '"</span> << token << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> 0;
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 line >> token;
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"coordinate"</span>)
-<a name="l00151"></a>00151 {
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (tolower(token) == <span class="stringliteral">"array"</span>)
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 dense_format = <span class="keyword">true</span>;
-<a name="l00155"></a>00155 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": 'array' type is not supported yet!"</span> << std::endl;
-<a name="l00156"></a>00156 <span class="keywordflow">return</span> 0;
-<a name="l00157"></a>00157 }
-<a name="l00158"></a>00158 <span class="keywordflow">else</span>
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">" in file "</span> << file << <span class="stringliteral">": Expected 'array' or 'coordinate', got '"</span> << token << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00161"></a>00161 <span class="keywordflow">return</span> 0;
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 line >> token;
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (tolower(token) != <span class="stringliteral">"real"</span>)
-<a name="l00167"></a>00167 {
-<a name="l00168"></a>00168 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": The MatrixMarket reader provided with ViennaCL supports only real valued floating point arithmetic."</span> << std::endl;
-<a name="l00169"></a>00169 <span class="keywordflow">return</span> 0;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 line >> token;
-<a name="l00173"></a>00173 <span class="keywordflow">if</span> (tolower(token) == <span class="stringliteral">"general"</span>){ }
-<a name="l00174"></a>00174 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tolower(token) == <span class="stringliteral">"symmetric"</span>){ symmetric = <span class="keyword">true</span>; }
-<a name="l00175"></a>00175 <span class="keywordflow">else</span>
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": The MatrixMarket reader provided with ViennaCL supports only general or symmetric matrices."</span> << std::endl;
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> 0;
-<a name="l00179"></a>00179 }
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 <span class="keywordflow">else</span>
-<a name="l00184"></a>00184 {
-<a name="l00185"></a>00185 std::stringstream line(std::stringstream::in | std::stringstream::out);
-<a name="l00186"></a>00186 line << std::string(buffer);
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="keywordflow">if</span> (is_header)
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="comment">//read header line</span>
-<a name="l00191"></a>00191 <span class="keywordtype">long</span> rows;
-<a name="l00192"></a>00192 <span class="keywordtype">long</span> cols;
-<a name="l00193"></a>00193
-<a name="l00194"></a>00194 <span class="keywordflow">if</span> (line.good())
-<a name="l00195"></a>00195 line >> rows;
-<a name="l00196"></a>00196 <span class="keywordflow">else</span>
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Could not get matrix dimensions (rows) in line "</span> << linenum << std::endl;
-<a name="l00199"></a>00199 <span class="keywordflow">return</span> 0;
-<a name="l00200"></a>00200 }
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> (line.good())
-<a name="l00203"></a>00203 line >> cols;
-<a name="l00204"></a>00204 <span class="keywordflow">else</span>
-<a name="l00205"></a>00205 {
-<a name="l00206"></a>00206 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Could not get matrix dimensions (columns) in line "</span> << linenum << std::endl;
-<a name="l00207"></a>00207 <span class="keywordflow">return</span> 0;
-<a name="l00208"></a>00208 }
-<a name="l00209"></a>00209 <span class="keywordflow">if</span> (!dense_format)
-<a name="l00210"></a>00210 {
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (line.good())
-<a name="l00212"></a>00212 line >> nnz;
-<a name="l00213"></a>00213 <span class="keywordflow">else</span>
-<a name="l00214"></a>00214 {
-<a name="l00215"></a>00215 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Could not get matrix dimensions (columns) in line "</span> << linenum << std::endl;
-<a name="l00216"></a>00216 <span class="keywordflow">return</span> 0;
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keywordflow">if</span> (rows > 0 && cols > 0)
-<a name="l00221"></a>00221 mat.resize(rows, cols, <span class="keyword">false</span>);
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 is_header = <span class="keyword">false</span>;
-<a name="l00224"></a>00224 }
-<a name="l00225"></a>00225 <span class="keywordflow">else</span>
-<a name="l00226"></a>00226 {
-<a name="l00227"></a>00227 <span class="comment">//read data</span>
-<a name="l00228"></a>00228 <span class="keywordflow">if</span> (dense_format)
-<a name="l00229"></a>00229 {
-<a name="l00230"></a>00230 <span class="keywordtype">double</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>;
-<a name="l00231"></a>00231 line >> value;
-<a name="l00232"></a>00232 mat(cur_row, cur_col) = value;
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="keywordflow">if</span> (++cur_row == static_cast<long>(mat.size1()))
-<a name="l00235"></a>00235 {
-<a name="l00236"></a>00236 <span class="comment">//next column</span>
-<a name="l00237"></a>00237 ++cur_col;
-<a name="l00238"></a>00238 cur_row = 0;
-<a name="l00239"></a>00239 }
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241 <span class="keywordflow">else</span> <span class="comment">//sparse format</span>
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 <span class="keywordtype">long</span> row;
-<a name="l00244"></a>00244 <span class="keywordtype">long</span> col;
-<a name="l00245"></a>00245 <span class="keywordtype">double</span> <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>;
-<a name="l00246"></a>00246
-<a name="l00247"></a>00247 <span class="comment">//parse data:</span>
-<a name="l00248"></a>00248 <span class="keywordflow">if</span> (line.good())
-<a name="l00249"></a>00249 line >> row;
-<a name="l00250"></a>00250 <span class="keywordflow">else</span>
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Parse error for matrix entry in line "</span> << linenum << std::endl;
-<a name="l00253"></a>00253 <span class="keywordflow">return</span> 0;
-<a name="l00254"></a>00254 }
-<a name="l00255"></a>00255
-<a name="l00256"></a>00256 <span class="keywordflow">if</span> (line.good())
-<a name="l00257"></a>00257 line >> col;
-<a name="l00258"></a>00258 <span class="keywordflow">else</span>
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Parse error for matrix entry in line "</span> << linenum << std::endl;
-<a name="l00261"></a>00261 <span class="keywordflow">return</span> 0;
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 <span class="comment">//take index_base base into account:</span>
-<a name="l00265"></a>00265 row -= index_base;
-<a name="l00266"></a>00266 col -= index_base;
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (line.good())
-<a name="l00269"></a>00269 line >> value;
-<a name="l00270"></a>00270 <span class="keywordflow">else</span>
-<a name="l00271"></a>00271 {
-<a name="l00272"></a>00272 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">": Parse error for matrix entry in line "</span> << linenum << std::endl;
-<a name="l00273"></a>00273 <span class="keywordflow">return</span> 0;
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (row >= static_cast<long>(mat.size1()) || row < 0)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">": Row index out of bounds: "</span> << row << <span class="stringliteral">" (matrix dim: "</span> << mat.size1() << <span class="stringliteral">" x "</span> << mat.size2() << <span class="stringliteral">")"</span> << std::endl;
-<a name="l00279"></a>00279 <span class="keywordflow">return</span> 0;
-<a name="l00280"></a>00280 }
-<a name="l00281"></a>00281
-<a name="l00282"></a>00282 <span class="keywordflow">if</span> (col >= static_cast<long>(mat.size2()) || col < 0)
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 std::cerr << <span class="stringliteral">"Error in file "</span> << file << <span class="stringliteral">" at line "</span> << linenum << <span class="stringliteral">": Column index out of bounds: "</span> << col << <span class="stringliteral">" (matrix dim: "</span> << mat.size1() << <span class="stringliteral">" x "</span> << mat.size2() << <span class="stringliteral">")"</span> << std::endl;
-<a name="l00285"></a>00285 <span class="keywordflow">return</span> 0;
-<a name="l00286"></a>00286 }
-<a name="l00287"></a>00287
-<a name="l00288"></a>00288 mat(row, col) = value;
-<a name="l00289"></a>00289 <span class="keywordflow">if</span> (symmetric)
-<a name="l00290"></a>00290 mat(col, row) = value;
-<a name="l00291"></a>00291
-<a name="l00292"></a>00292 <span class="keywordflow">if</span> (++valid_entries == nnz)
-<a name="l00293"></a>00293 <span class="keywordflow">break</span>;
-<a name="l00294"></a>00294
-<a name="l00295"></a>00295 } <span class="comment">//else dense_format</span>
-<a name="l00296"></a>00296 }
-<a name="l00297"></a>00297 }
-<a name="l00298"></a>00298 }
-<a name="l00299"></a>00299
-<a name="l00300"></a>00300 std::cout << linenum << <span class="stringliteral">" lines read."</span> << std::endl;
-<a name="l00301"></a>00301 reader.close();
-<a name="l00302"></a>00302 <span class="keywordflow">return</span> linenum;
-<a name="l00303"></a>00303 }
-<a name="l00304"></a>00304
-<a name="l00305"></a>00305
-<a name="l00314"></a>00314 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00315"></a><a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280">00315</a> <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(MatrixType & mat,
-<a name="l00316"></a>00316 <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00317"></a>00317 <span class="keywordtype">long</span> index_base = 1)
-<a name="l00318"></a>00318 {
-<a name="l00319"></a>00319 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(mat, file, index_base);
-<a name="l00320"></a>00320 }
-<a name="l00321"></a>00321
-<a name="l00322"></a>00322 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00323"></a><a class="code" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">00323</a> <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(MatrixType & mat,
-<a name="l00324"></a>00324 <span class="keyword">const</span> std::string & file,
-<a name="l00325"></a>00325 <span class="keywordtype">long</span> index_base = 1)
-<a name="l00326"></a>00326 {
-<a name="l00327"></a>00327 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(mat, file.c_str(), index_base);
-<a name="l00328"></a>00328 }
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00331"></a><a class="code" href="namespaceviennacl_1_1io.html#a9fb88f9c5737bb5e1231782f6f4d6558">00331</a> <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > & mat,
-<a name="l00332"></a>00332 <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00333"></a>00333 <span class="keywordtype">long</span> index_base = 1)
-<a name="l00334"></a>00334 {
-<a name="l00335"></a>00335 <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00336"></a>00336 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(adapted_matrix, file, index_base);
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00340"></a><a class="code" href="namespaceviennacl_1_1io.html#a0540c43b2f513a6c8ea30fb077a08e48">00340</a> <span class="keywordtype">long</span> <a class="code" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280" title="Reads a sparse matrix from a file (MatrixMarket format).">read_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > & mat,
-<a name="l00341"></a>00341 <span class="keyword">const</span> std::string & file,
-<a name="l00342"></a>00342 <span class="keywordtype">long</span> index_base = 1)
-<a name="l00343"></a>00343 {
-<a name="l00344"></a>00344 <a class="code" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html" title="Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00345"></a>00345 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd" title="Reads a sparse or dense matrix from a file (MatrixMarket format).">read_matrix_market_file_impl</a>(adapted_matrix, file.c_str(), index_base);
-<a name="l00346"></a>00346 }
-<a name="l00347"></a>00347
-<a name="l00348"></a>00348
-<a name="l00350"></a>00350 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00351"></a><a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">00351</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(MatrixType <span class="keyword">const</span> & mat, <span class="keyword">const</span> <span class="keywordtype">char</span> * file, <span class="keywordtype">long</span> index_base)
-<a name="l00352"></a>00352 {
-<a name="l00353"></a>00353 std::ofstream writer(file);
-<a name="l00354"></a>00354
-<a name="l00355"></a>00355 <span class="keywordtype">long</span> num_entries = 0;
-<a name="l00356"></a>00356 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = mat.begin1();
-<a name="l00357"></a>00357 row_it != mat.end1();
-<a name="l00358"></a>00358 ++row_it)
-<a name="l00359"></a>00359 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00360"></a>00360 col_it != row_it.end();
-<a name="l00361"></a>00361 ++col_it)
-<a name="l00362"></a>00362 ++num_entries;
-<a name="l00363"></a>00363
-<a name="l00364"></a>00364 writer << <span class="stringliteral">"%%MatrixMarket matrix coordinate real general"</span> << std::endl;
-<a name="l00365"></a>00365 writer << mat.size1() << <span class="stringliteral">" "</span> << mat.size2() << <span class="stringliteral">" "</span> << num_entries << std::endl;
-<a name="l00366"></a>00366
-<a name="l00367"></a>00367 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = mat.begin1();
-<a name="l00368"></a>00368 row_it != mat.end1();
-<a name="l00369"></a>00369 ++row_it)
-<a name="l00370"></a>00370 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00371"></a>00371 col_it != row_it.end();
-<a name="l00372"></a>00372 ++col_it)
-<a name="l00373"></a>00373 writer << col_it.index1() + index_base << <span class="stringliteral">" "</span> << col_it.index2() + index_base << <span class="stringliteral">" "</span> << *col_it << std::endl;
-<a name="l00374"></a>00374
-<a name="l00375"></a>00375 writer.close();
-<a name="l00376"></a>00376 }
-<a name="l00377"></a>00377
-<a name="l00378"></a>00378 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00379"></a><a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">00379</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > <span class="keyword">const</span> & mat,
-<a name="l00380"></a>00380 <span class="keyword">const</span> <span class="keywordtype">char</span> * file,
-<a name="l00381"></a>00381 <span class="keywordtype">long</span> index_base = 1)
-<a name="l00382"></a>00382 {
-<a name="l00383"></a>00383 <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00384"></a>00384 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(adapted_matrix, file, index_base);
-<a name="l00385"></a>00385 }
-<a name="l00386"></a>00386
-<a name="l00387"></a>00387 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00388"></a><a class="code" href="namespaceviennacl_1_1io.html#a47025d215b1eb3d9e965f2bf772b3534">00388</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a>(std::vector< std::map<unsigned int, ScalarType> > <span class="keyword">const</span> & mat,
-<a name="l00389"></a>00389 <span class="keyword">const</span> std::string & file,
-<a name="l00390"></a>00390 <span class="keywordtype">long</span> index_base = 1)
-<a name="l00391"></a>00391 {
-<a name="l00392"></a>00392 <a class="code" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html" title="Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int...">viennacl::tools::const_sparse_matrix_adapter<ScalarType></a> adapted_matrix(mat);
-<a name="l00393"></a>00393 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(adapted_matrix, file.c_str(), index_base);
-<a name="l00394"></a>00394 }
-<a name="l00395"></a>00395
-<a name="l00404"></a>00404 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00405"></a><a class="code" href="namespaceviennacl_1_1io.html#a68425e89c32e2e221555411f08e3a271">00405</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a>(MatrixType <span class="keyword">const</span> & mat,
-<a name="l00406"></a>00406 <span class="keyword">const</span> std::string & file,
-<a name="l00407"></a>00407 <span class="keywordtype">long</span> index_base = 1)
-<a name="l00408"></a>00408 {
-<a name="l00409"></a>00409 <a class="code" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a>(mat, file.c_str(), index_base);
-<a name="l00410"></a>00410 }
-<a name="l00411"></a>00411
-<a name="l00412"></a>00412
-<a name="l00413"></a>00413 } <span class="comment">//namespace io</span>
-<a name="l00414"></a>00414 } <span class="comment">//namespace viennacl</span>
-<a name="l00415"></a>00415
-<a name="l00416"></a>00416 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__operations_8hpp.html b/doc/doxygen/html/matrix__operations_8hpp.html
deleted file mode 100644
index 03e433d..0000000
--- a/doc/doxygen/html/matrix__operations_8hpp.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of dense matrix related operations. also matrix-vector products.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">viennacl/tools/matrix_prod_kernel_class_deducer.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__kernels_8h_source.html">viennacl/linalg/kernels/vector_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</code><br/>
-
-<p><a href="matrix__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">add</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix. <a href="#a2777d6a19ce110ae9df6609f1677be0f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">inplace_add</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another. <a href="#a225d1c31fb7c1dac9f5b94f17ae1f950"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">sub</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix. <a href="#a707ace72b7ff8ad1e3a9ff2606567f1e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6">inplace_sub</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another. <a href="#ae88903a9ae8dbc3fc47db7f37da326a6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar. <a href="#a0e4c7521b309670969d542805ac87b35"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4501136a87a9d6294c210628ffcb23d0">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar. <a href="#a4501136a87a9d6294c210628ffcb23d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">inplace_divide</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar. <a href="#a6e86b6169a6ff7495734d3eef5d4fd33"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication. <a href="#a5e71c3317fe25d0ce5e31be66597d8bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbc7f86d9d7e24ff1eae02fe976bc77d">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication. <a href="#abbc7f86d9d7e24ff1eae02fe976bc77d"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const matrix< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const matrix<br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VECTOR_ALIGNMENT >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a transposed matrix. <a href="#a4f088d9329b8c801492830a519fdef15"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#af8a3b3e7b5421283ccdc96c07ce3c624">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Unwraps the transposed matrix proxy and forwards to <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl()</a>. <a href="#af8a3b3e7b5421283ccdc96c07ce3c624"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">trans_prod_impl</a> (const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a transposed matrix. <a href="#a0c03a1482aebb921ce45f3b1c933697c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C, int block_size=15)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#a1294bf672bcc55c62d1622b07b44425e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa03a4515a4033a22afc6f2e9bfad1ed6">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#aa03a4515a4033a22afc6f2e9bfad1ed6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07e0985a7c2429067b483238d0ffeb2a">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#a07e0985a7c2429067b483238d0ffeb2a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a21163d892b2568fa4fa3abe750a5504f">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#a21163d892b2568fa4fa3abe750a5504f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">outer_prod</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update. <a href="#a1b56d764864ae3d91bb6bac2ae87bec8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update. <a href="#a90c6aa1f54abd466421ea06bf9b49716"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">scaled_rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, SCALARTYPE val, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update. <a href="#a46f8f468d8d1d6deec2a4d906f987e85"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of dense matrix related operations. also matrix-vector products. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__operations_8hpp_source.html b/doc/doxygen/html/matrix__operations_8hpp_source.html
deleted file mode 100644
index 66075f1..0000000
--- a/doc/doxygen/html/matrix__operations_8hpp_source.html
+++ /dev/null
@@ -1,670 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/matrix_operations.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl/tools/matrix_kernel_class_deducer.hpp</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="matrix__prod__kernel__class__deducer_8hpp.html" title="Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products...">viennacl/tools/matrix_prod_kernel_class_deducer.hpp</a>"</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="vector__kernels_8h.html">viennacl/linalg/kernels/vector_kernels.h</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="matrix__row__kernels_8h.html">viennacl/linalg/kernels/matrix_row_kernels.h</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="matrix__col__kernels_8h.html">viennacl/linalg/kernels/matrix_col_kernels.h</a>"</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</span>
-<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</span>
-<a name="l00038"></a>00038 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</span>
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</span>
-<a name="l00041"></a>00041 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</span>
-<a name="l00042"></a>00042 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</span>
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="keyword">namespace </span>viennacl
-<a name="l00046"></a>00046 {
-<a name="l00047"></a>00047 <span class="keyword">namespace </span>linalg
-<a name="l00048"></a>00048 {
-<a name="l00049"></a>00049
-<a name="l00058"></a>00058 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00059"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">00059</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat1,
-<a name="l00060"></a>00060 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2,
-<a name="l00061"></a>00061 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00064"></a>00064 assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00065"></a>00065 assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00066"></a>00066 assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00071"></a>00071 assert( (mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00072"></a>00072 && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00073"></a>00073 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat2, result, size));
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00086"></a>00086 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00087"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">00087</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">inplace_add</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result,
-<a name="l00088"></a>00088 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2)
-<a name="l00089"></a>00089 {
-<a name="l00090"></a>00090 assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00091"></a>00091 assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_add"</span>);
-<a name="l00096"></a>00096 assert( (result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00097"></a>00097 && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00098"></a>00098 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00099"></a>00099
-<a name="l00100"></a>00100 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, mat2, size));
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103
-<a name="l00112"></a>00112 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00113"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">00113</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">sub</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat1,
-<a name="l00114"></a>00114 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2,
-<a name="l00115"></a>00115 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result)
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00118"></a>00118 assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00119"></a>00119 assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00120"></a>00120 assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00125"></a>00125 assert( (mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00126"></a>00126 && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00127"></a>00127 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00128"></a>00128
-<a name="l00129"></a>00129 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat2, result, size));
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131
-<a name="l00140"></a>00140 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00141"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6">00141</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">inplace_sub</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & result,
-<a name="l00142"></a>00142 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat2)
-<a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 assert(result.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00145"></a>00145 assert(result.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_sub"</span>);
-<a name="l00150"></a>00150 assert( (result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>() == mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>())
-<a name="l00151"></a>00151 && <span class="stringliteral">"Operands must have same dimension and memory layout in this version of ViennaCL!"</span>);
-<a name="l00152"></a>00152 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>(), mat2.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>());
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, mat2, size));
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156
-<a name="l00165"></a>00165 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00166"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">00166</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & result,
-<a name="l00167"></a>00167 SCALARTYPE val)
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00172"></a>00172 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>();
-<a name="l00173"></a>00173
-<a name="l00174"></a>00174 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, val, size));
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177
-<a name="l00186"></a>00186 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a4501136a87a9d6294c210628ffcb23d0">00187</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & result,
-<a name="l00188"></a>00188 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">viennacl::scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l00189"></a>00189 {
-<a name="l00190"></a>00190 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_mult"</span>);
-<a name="l00193"></a>00193 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>();
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, val, size));
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199
-<a name="l00208"></a>00208 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00209"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">00209</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">inplace_divide</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & result,
-<a name="l00210"></a>00210 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">viennacl::scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l00211"></a>00211 {
-<a name="l00212"></a>00212 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = result.<a class="code" href="classviennacl_1_1matrix.html#ac3019718fecac86d25ad8446e57bdd34" title="Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE).">internal_size</a>();
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(result, val, size));
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="comment">// A * x</span>
-<a name="l00228"></a>00228 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00229"></a>00229 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00230"></a>00230 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00231"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">00231</a> op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat,
-<a name="l00232"></a>00232 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00235"></a>00235 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00236"></a>00236 op_prod >(mat, vec);
-<a name="l00237"></a>00237 }
-<a name="l00238"></a>00238
-<a name="l00247"></a>00247 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00248"></a><a class="code" href="namespaceviennacl_1_1linalg.html#abbc7f86d9d7e24ff1eae02fe976bc77d">00248</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F, ALIGNMENT></a> & mat,
-<a name="l00249"></a>00249 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00250"></a>00250 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<TYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00251"></a>00251 {
-<a name="l00252"></a>00252 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00253"></a>00253 <span class="comment">// Inplace matrix-vector products like x = prod(A, x) are currently illegal: Introduce a temporary like y = prod(A, x); x = y; instead</span>
-<a name="l00254"></a>00254 assert(vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() != result.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() && <span class="stringliteral">"No direct inplace matrix-vector product possible. Introduce a temporary!"</span>);
-<a name="l00255"></a>00255 result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00258"></a>00258
-<a name="l00259"></a>00259 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"vec_mul"</span>);
-<a name="l00260"></a>00260 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00261"></a>00261 k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec, result));
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264
-<a name="l00265"></a>00265
-<a name="l00266"></a>00266 <span class="comment">// trans(A) * x</span>
-<a name="l00274"></a>00274 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00275"></a>00275 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00276"></a>00276 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00277"></a>00277 op_trans>,
-<a name="l00278"></a>00278 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00279"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">00279</a> op_prod > <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00280"></a>00280 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00281"></a>00281 op_trans> & proxy,
-<a name="l00282"></a>00282 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00283"></a>00283 {
-<a name="l00284"></a>00284 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression<const viennacl::matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00285"></a>00285 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00286"></a>00286 op_trans>,
-<a name="l00287"></a>00287 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a>,
-<a name="l00288"></a>00288 op_prod >(proxy, vec);
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290
-<a name="l00293"></a>00293 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00294"></a><a class="code" href="namespaceviennacl_1_1linalg.html#af8a3b3e7b5421283ccdc96c07ce3c624">00294</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00295"></a>00295 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a>,
-<a name="l00296"></a>00296 op_trans> & mat,
-<a name="l00297"></a>00297 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00298"></a>00298 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00299"></a>00299 {
-<a name="l00300"></a>00300 <a class="code" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl</a>(mat.lhs(), vec, result);
-<a name="l00301"></a>00301 }
-<a name="l00302"></a>00302
-<a name="l00311"></a>00311 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VECTOR_ALIGNMENT>
-<a name="l00312"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">00312</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, ALIGNMENT></a> & mat,
-<a name="l00313"></a>00313 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00314"></a>00314 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT></a> & result)
-<a name="l00315"></a>00315 {
-<a name="l00316"></a>00316 assert(mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>()); <span class="comment">//remember: mat is transposed!</span>
-<a name="l00317"></a>00317 <span class="comment">// Inplace matrix-vector products like x = prod(A, x) are currently illegal: Introduce a temporary like y = prod(A, x); x = y; instead</span>
-<a name="l00318"></a>00318 assert(vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() != result.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>() && <span class="stringliteral">"No direct inplace matrix-vector product possible. Introduce a temporary!"</span>);
-<a name="l00319"></a>00319 result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00320"></a>00320
-<a name="l00321"></a>00321 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00322"></a>00322
-<a name="l00323"></a>00323 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00324"></a>00324
-<a name="l00325"></a>00325 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat, mat.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec, result));
-<a name="l00326"></a>00326 }
-<a name="l00327"></a>00327
-<a name="l00328"></a>00328
-<a name="l00329"></a>00329
-<a name="l00335"></a>00335 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">00336</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F1, ALIGNMENT></a> & A,
-<a name="l00337"></a>00337 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a> & B,
-<a name="l00338"></a>00338 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C,
-<a name="l00339"></a>00339 <span class="keywordtype">int</span> block_size = 15) <span class="comment">// [JW] added ability to set block size from outside ..</span>
-<a name="l00340"></a>00340 {
-<a name="l00341"></a>00341 assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00342"></a>00342 assert(A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00343"></a>00343 assert(B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00344"></a>00344 <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00345"></a>00345 assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()
-<a name="l00346"></a>00346 && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()
-<a name="l00347"></a>00347 && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00348"></a>00348
-<a name="l00349"></a>00349 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00350"></a>00350 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00351"></a>00351 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00352"></a>00352 KernelClass::init();
-<a name="l00353"></a>00353
-<a name="l00354"></a>00354 <span class="comment">//std::cout << "KernelClass::program_name() : " << KernelClass::program_name() << std::endl;</span>
-<a name="l00355"></a>00355 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_AA"</span>);
-<a name="l00356"></a>00356
-<a name="l00357"></a>00357 <span class="comment">/*k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1() / 2, block_size / 2));</span>
-<a name="l00358"></a>00358 <span class="comment"> k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2() / 2, block_size / 2));</span>
-<a name="l00359"></a>00359 <span class="comment"> k.local_work_size(0, block_size / 2);</span>
-<a name="l00360"></a>00360 <span class="comment"> k.local_work_size(1, block_size / 2);*/</span>
-<a name="l00361"></a>00361
-<a name="l00362"></a>00362 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00363"></a>00363 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00364"></a>00364 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00365"></a>00365 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00366"></a>00366
-<a name="l00367"></a>00367 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00368"></a>00368 k(A, A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00369"></a>00369 B, B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00370"></a>00370 C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00371"></a>00371 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00372"></a>00372 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));
-<a name="l00373"></a>00373 }
-<a name="l00374"></a>00374
-<a name="l00375"></a>00375
-<a name="l00381"></a>00381 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00382"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aa03a4515a4033a22afc6f2e9bfad1ed6">00382</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00383"></a>00383 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00384"></a>00384 op_trans> & A,
-<a name="l00385"></a>00385 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a> & B,
-<a name="l00386"></a>00386 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C)
-<a name="l00387"></a>00387 {
-<a name="l00388"></a>00388 assert(A.size2() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00389"></a>00389 assert(A.size1() == B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00390"></a>00390 assert(B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00391"></a>00391 <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00392"></a>00392 assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>()
-<a name="l00393"></a>00393 && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()
-<a name="l00394"></a>00394 && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00395"></a>00395
-<a name="l00396"></a>00396 <span class="keywordtype">int</span> block_size = 15;
-<a name="l00397"></a>00397
-<a name="l00398"></a>00398 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00399"></a>00399 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00400"></a>00400 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00401"></a>00401 KernelClass::init();
-<a name="l00402"></a>00402
-<a name="l00403"></a>00403 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_TA"</span>);
-<a name="l00404"></a>00404
-<a name="l00405"></a>00405 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00406"></a>00406 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00407"></a>00407
-<a name="l00408"></a>00408 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00409"></a>00409 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00410"></a>00410 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00411"></a>00411 k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
-<a name="l00412"></a>00412 B, B.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), B.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00413"></a>00413 C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00414"></a>00414 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00415"></a>00415 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));
-<a name="l00416"></a>00416 }
-<a name="l00417"></a>00417
-<a name="l00418"></a>00418
-<a name="l00424"></a>00424 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00425"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a07e0985a7c2429067b483238d0ffeb2a">00425</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F1, ALIGNMENT></a> & A,
-<a name="l00426"></a>00426 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00427"></a>00427 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00428"></a>00428 op_trans> & B,
-<a name="l00429"></a>00429 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C)
-<a name="l00430"></a>00430 {
-<a name="l00431"></a>00431 assert(A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00432"></a>00432 assert(A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == B.size2());
-<a name="l00433"></a>00433 assert(B.size1() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00434"></a>00434 <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00435"></a>00435 assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()
-<a name="l00436"></a>00436 && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>()
-<a name="l00437"></a>00437 && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00438"></a>00438
-<a name="l00439"></a>00439 <span class="keywordtype">int</span> block_size = 15;
-<a name="l00440"></a>00440
-<a name="l00441"></a>00441 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00442"></a>00442 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00443"></a>00443 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00444"></a>00444 KernelClass::init();
-<a name="l00445"></a>00445
-<a name="l00446"></a>00446 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_AT"</span>);
-<a name="l00447"></a>00447
-<a name="l00448"></a>00448 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00449"></a>00449 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00450"></a>00450
-<a name="l00451"></a>00451 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00452"></a>00452 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00453"></a>00453 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00454"></a>00454 k(A, A.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), A.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00455"></a>00455 B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
-<a name="l00456"></a>00456 C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00457"></a>00457 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00458"></a>00458 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));
-<a name="l00459"></a>00459 }
-<a name="l00460"></a>00460
-<a name="l00461"></a>00461
-<a name="l00462"></a>00462
-<a name="l00468"></a>00468 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keyword">typename</span> F1, <span class="keyword">typename</span> F2, <span class="keyword">typename</span> F3, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00469"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a21163d892b2568fa4fa3abe750a5504f">00469</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00470"></a>00470 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00471"></a>00471 op_trans> & A,
-<a name="l00472"></a>00472 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00473"></a>00473 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00474"></a>00474 op_trans> & B,
-<a name="l00475"></a>00475 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> & C)
-<a name="l00476"></a>00476 {
-<a name="l00477"></a>00477 assert(A.size2() == C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>());
-<a name="l00478"></a>00478 assert(A.size1() == B.size2());
-<a name="l00479"></a>00479 assert(B.size1() == C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00480"></a>00480 <span class="comment">// Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead</span>
-<a name="l00481"></a>00481 assert(C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != A.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>()
-<a name="l00482"></a>00482 && C.<a class="code" href="classviennacl_1_1matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>() != B.lhs().<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a66eb7514ea7f7f8a5738a180b14e9b48">handle</a>()
-<a name="l00483"></a>00483 && <span class="stringliteral">"No direct inplace matrix-matrix product possible. Introduce a temporary!"</span>);
-<a name="l00484"></a>00484
-<a name="l00485"></a>00485 <span class="keywordtype">int</span> block_size = 15;
-<a name="l00486"></a>00486
-<a name="l00487"></a>00487 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix<TYPE, F1, ALIGNMENT></a>,
-<a name="l00488"></a>00488 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F2, ALIGNMENT></a>,
-<a name="l00489"></a>00489 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<TYPE, F3, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00490"></a>00490 KernelClass::init();
-<a name="l00491"></a>00491
-<a name="l00492"></a>00492 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"prod_TT"</span>);
-<a name="l00493"></a>00493
-<a name="l00494"></a>00494 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), block_size));
-<a name="l00495"></a>00495 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), block_size));
-<a name="l00496"></a>00496
-<a name="l00497"></a>00497 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, block_size);
-<a name="l00498"></a>00498 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(1, block_size);
-<a name="l00499"></a>00499 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(
-<a name="l00500"></a>00500 k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
-<a name="l00501"></a>00501 B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
-<a name="l00502"></a>00502 C, C.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), C.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00503"></a>00503 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size),
-<a name="l00504"></a>00504 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(TYPE) * block_size * block_size) ));
-<a name="l00505"></a>00505 }
-<a name="l00506"></a>00506
-<a name="l00507"></a>00507
-<a name="l00508"></a>00508
-<a name="l00509"></a>00509
-<a name="l00510"></a>00510
-<a name="l00511"></a>00511
-<a name="l00512"></a>00512
-<a name="l00513"></a>00513
-<a name="l00514"></a>00514
-<a name="l00515"></a>00515
-<a name="l00516"></a>00516
-<a name="l00522"></a>00522 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> VA2>
-<a name="l00523"></a>00523 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00524"></a>00524 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00525"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">00525</a> op_prod> <a class="code" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8" title="Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update.">outer_prod</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA1></a> & vec1,
-<a name="l00526"></a>00526 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a> & vec2)
-<a name="l00527"></a>00527 {
-<a name="l00528"></a>00528 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1></a>,
-<a name="l00529"></a>00529 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, VA2></a>,
-<a name="l00530"></a>00530 op_prod>(vec1, vec2);
-<a name="l00531"></a>00531 }
-<a name="l00532"></a>00532
-<a name="l00533"></a>00533
-<a name="l00534"></a>00534
-<a name="l00543"></a>00543 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00544"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">00544</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716" title="The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update.">rank_1_update</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat1,
-<a name="l00545"></a>00545 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00546"></a>00546 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00547"></a>00547 {
-<a name="l00548"></a>00548 assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00549"></a>00549 assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00550"></a>00550
-<a name="l00551"></a>00551 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00552"></a>00552
-<a name="l00553"></a>00553 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"rank1_update"</span>);
-<a name="l00554"></a>00554
-<a name="l00555"></a>00555 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(), vec1, vec2));
-<a name="l00556"></a>00556 }
-<a name="l00557"></a>00557
-<a name="l00558"></a>00558
-<a name="l00568"></a>00568 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00569"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">00569</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85" title="The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update...">scaled_rank_1_update</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat1,
-<a name="l00570"></a>00570 SCALARTYPE val,
-<a name="l00571"></a>00571 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00572"></a>00572 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00573"></a>00573 {
-<a name="l00574"></a>00574 assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00575"></a>00575 assert(mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00576"></a>00576
-<a name="l00577"></a>00577 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="Implementation of a helper meta class for deducing the correct kernels for the supplied matrix...">viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT></a> >::ResultType KernelClass;
-<a name="l00578"></a>00578
-<a name="l00579"></a>00579 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(KernelClass::program_name(), <span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00580"></a>00580
-<a name="l00581"></a>00581 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(mat1, mat1.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#a4854e3e0aa7a3751f63f6602b38ee4b3" title="Returns the internal number of rows. Usually required for launching OpenCL kernels only...">internal_size1</a>(), mat1.<a class="code" href="classviennacl_1_1matrix.html#acd1a1df1441c667eded344541031a335" title="Returns the internal number of columns. Usually required for launching OpenCL kernels only...">internal_size2</a>(),
-<a name="l00582"></a>00582 val, vec1, vec2));
-<a name="l00583"></a>00583 }
-<a name="l00584"></a>00584
-<a name="l00585"></a>00585 } <span class="comment">//namespace linalg</span>
-<a name="l00586"></a>00586
-<a name="l00587"></a>00587
-<a name="l00588"></a>00588 <span class="comment">//v = A * x</span>
-<a name="l00593"></a>00593 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00594"></a>00594 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00595"></a>00595 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00596"></a><a class="code" href="classviennacl_1_1vector.html#abf65c6fc9600970e4ac00b693e0d04fb">00596</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00597"></a>00597 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00598"></a>00598 viennacl::op_prod> & proxy)
-<a name="l00599"></a>00599 {
-<a name="l00600"></a>00600 <span class="comment">// check for the special case x = A * x</span>
-<a name="l00601"></a>00601 <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00602"></a>00602 {
-<a name="l00603"></a>00603 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00604"></a>00604 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00605"></a>00605 *<span class="keyword">this</span> = result;
-<a name="l00606"></a>00606 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00607"></a>00607 }
-<a name="l00608"></a>00608 <span class="keywordflow">else</span>
-<a name="l00609"></a>00609 {
-<a name="l00610"></a>00610 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00611"></a>00611 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00612"></a>00612 }
-<a name="l00613"></a>00613 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00614"></a>00614 }
-<a name="l00615"></a>00615
-<a name="l00616"></a>00616 <span class="comment">//v += A * x</span>
-<a name="l00621"></a>00621 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00622"></a>00622 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00623"></a>00623 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00624"></a><a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3">00624</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00625"></a>00625 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00626"></a>00626 op_prod> & proxy)
-<a name="l00627"></a>00627 {
-<a name="l00628"></a>00628 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00629"></a>00629 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00630"></a>00630 *<span class="keyword">this</span> += result;
-<a name="l00631"></a>00631 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00632"></a>00632 }
-<a name="l00633"></a>00633
-<a name="l00638"></a>00638 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00639"></a>00639 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00640"></a>00640 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00641"></a><a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68">00641</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00642"></a>00642 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00643"></a>00643 op_prod> & proxy)
-<a name="l00644"></a>00644 {
-<a name="l00645"></a>00645 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00646"></a>00646 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00647"></a>00647 *<span class="keyword">this</span> -= result;
-<a name="l00648"></a>00648 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00649"></a>00649 }
-<a name="l00650"></a>00650
-<a name="l00651"></a>00651
-<a name="l00652"></a>00652 <span class="comment">//free functions:</span>
-<a name="l00657"></a>00657 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00658"></a>00658 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00659"></a>00659 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00660"></a><a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973">00660</a> <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00661"></a>00661 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00662"></a>00662 op_prod> & proxy)
-<a name="l00663"></a>00663 {
-<a name="l00664"></a>00664 assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00665"></a>00665 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00666"></a>00666 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00667"></a>00667 result += *<span class="keyword">this</span>;
-<a name="l00668"></a>00668 <span class="keywordflow">return</span> result;
-<a name="l00669"></a>00669 }
-<a name="l00670"></a>00670
-<a name="l00675"></a>00675 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00676"></a>00676 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00677"></a>00677 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00678"></a><a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1">00678</a> <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00679"></a>00679 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00680"></a>00680 op_prod> & proxy)
-<a name="l00681"></a>00681 {
-<a name="l00682"></a>00682 assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00683"></a>00683 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00684"></a>00684 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00685"></a>00685 result = *<span class="keyword">this</span> - result;
-<a name="l00686"></a>00686 <span class="keywordflow">return</span> result;
-<a name="l00687"></a>00687 }
-<a name="l00688"></a>00688
-<a name="l00689"></a>00689
-<a name="l00691"></a>00691
-<a name="l00692"></a>00692
-<a name="l00693"></a>00693 <span class="comment">//v = trans(A) * x</span>
-<a name="l00698"></a>00698 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00699"></a>00699 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00700"></a>00700 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00701"></a><a class="code" href="classviennacl_1_1vector.html#aa34adb8d02e43797f23d78bd0fcb7ce9">00701</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00702"></a>00702 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00703"></a>00703 op_trans>,
-<a name="l00704"></a>00704 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00705"></a>00705 viennacl::op_prod> & proxy)
-<a name="l00706"></a>00706 {
-<a name="l00707"></a>00707 <span class="comment">// check for the special case x = trans(A) * x</span>
-<a name="l00708"></a>00708 <span class="keywordflow">if</span> (proxy.rhs().handle() == this-><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>())
-<a name="l00709"></a>00709 {
-<a name="l00710"></a>00710 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> result(proxy.rhs().size());
-<a name="l00711"></a>00711 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00712"></a>00712 *<span class="keyword">this</span> = result;
-<a name="l00713"></a>00713 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00714"></a>00714 }
-<a name="l00715"></a>00715 <span class="keywordflow">else</span>
-<a name="l00716"></a>00716 {
-<a name="l00717"></a>00717 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00718"></a>00718 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00719"></a>00719 }
-<a name="l00720"></a>00720 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00721"></a>00721 }
-<a name="l00722"></a>00722
-<a name="l00723"></a>00723 <span class="comment">//v += A * x</span>
-<a name="l00728"></a>00728 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00729"></a>00729 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00730"></a>00730 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00731"></a><a class="code" href="classviennacl_1_1vector.html#a7170c99b16798d529af0325845639839">00731</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00732"></a>00732 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00733"></a>00733 op_trans>,
-<a name="l00734"></a>00734 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00735"></a>00735 op_prod> & proxy)
-<a name="l00736"></a>00736 {
-<a name="l00737"></a>00737 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00738"></a>00738 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00739"></a>00739 *<span class="keyword">this</span> += result;
-<a name="l00740"></a>00740 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00741"></a>00741 }
-<a name="l00742"></a>00742
-<a name="l00747"></a>00747 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00748"></a>00748 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00749"></a>00749 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> &
-<a name="l00750"></a><a class="code" href="classviennacl_1_1vector.html#a42a2bea8b973e703dc74e7ad0a21ad75">00750</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00751"></a>00751 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00752"></a>00752 op_trans>,
-<a name="l00753"></a>00753 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00754"></a>00754 op_prod> & proxy)
-<a name="l00755"></a>00755 {
-<a name="l00756"></a>00756 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(proxy.lhs().size1());
-<a name="l00757"></a>00757 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00758"></a>00758 *<span class="keyword">this</span> -= result;
-<a name="l00759"></a>00759 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00760"></a>00760 }
-<a name="l00761"></a>00761
-<a name="l00762"></a>00762
-<a name="l00763"></a>00763 <span class="comment">//free functions:</span>
-<a name="l00768"></a>00768 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00769"></a>00769 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00770"></a>00770 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00771"></a><a class="code" href="classviennacl_1_1vector.html#afa36924cb9eece8efec2a62996e0f97a">00771</a> <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00772"></a>00772 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00773"></a>00773 op_trans>,
-<a name="l00774"></a>00774 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00775"></a>00775 op_prod> & proxy)
-<a name="l00776"></a>00776 {
-<a name="l00777"></a>00777 assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00778"></a>00778 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00779"></a>00779 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00780"></a>00780 result += *<span class="keyword">this</span>;
-<a name="l00781"></a>00781 <span class="keywordflow">return</span> result;
-<a name="l00782"></a>00782 }
-<a name="l00783"></a>00783
-<a name="l00788"></a>00788 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00789"></a>00789 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00790"></a>00790 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a>
-<a name="l00791"></a><a class="code" href="classviennacl_1_1vector.html#a4ac366eca51e40271f505b2996173613">00791</a> <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00792"></a>00792 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00793"></a>00793 op_trans>,
-<a name="l00794"></a>00794 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00795"></a>00795 op_prod> & proxy)
-<a name="l00796"></a>00796 {
-<a name="l00797"></a>00797 assert(proxy.lhs().size1() == <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00798"></a>00798 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00799"></a>00799 <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(proxy.lhs(), proxy.rhs(), result);
-<a name="l00800"></a>00800 result = *<span class="keyword">this</span> - result;
-<a name="l00801"></a>00801 <span class="keywordflow">return</span> result;
-<a name="l00802"></a>00802 }
-<a name="l00803"></a>00803
-<a name="l00804"></a>00804
-<a name="l00805"></a>00805 } <span class="comment">//namespace viennacl</span>
-<a name="l00806"></a>00806
-<a name="l00807"></a>00807
-<a name="l00808"></a>00808 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h.html
deleted file mode 100644
index a74e930..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__col__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h_source.html
deleted file mode 100644
index b5ec4b4..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_col_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_col_col_col;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_col_col_col<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_col_col_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_col_col_col<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_col_col_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__source_8h.html b/doc/doxygen/html/matrix__prod__col__col__col__source_8h.html
deleted file mode 100644
index 83b0a09..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__col__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__col__source_8h_source.html
deleted file mode 100644
index a49d61c..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_col_col_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h.html
deleted file mode 100644
index eaed50f..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__col__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h_source.html
deleted file mode 100644
index 3768870..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_row_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_col_col_row;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_col_col_row<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_col_row_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_col_col_row<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_col_row_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__source_8h.html b/doc/doxygen/html/matrix__prod__col__col__row__source_8h.html
deleted file mode 100644
index 44ed5d6..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__col__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__col__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__col__row__source_8h_source.html
deleted file mode 100644
index 522cf3c..0000000
--- a/doc/doxygen/html/matrix__prod__col__col__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__col__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_col_row_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h.html
deleted file mode 100644
index 01a7b67..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__row__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h_source.html
deleted file mode 100644
index 865e262..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_col_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_col_row_col;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_col_row_col<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_row_col_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_col_row_col<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_row_col_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__source_8h.html b/doc/doxygen/html/matrix__prod__col__row__col__source_8h.html
deleted file mode 100644
index 508ad8f..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__row__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__col__source_8h_source.html
deleted file mode 100644
index 167c5f5..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...col_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_row_col_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h.html
deleted file mode 100644
index f397042..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__col__row__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h_source.html
deleted file mode 100644
index 23af303..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_row_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_col_row_row;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_col_row_row<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_col_row_row_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_col_row_row<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_col_row_row_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__source_8h.html b/doc/doxygen/html/matrix__prod__col__row__row__source_8h.html
deleted file mode 100644
index 2e2a96a..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__col__row__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__col__row__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__col__row__row__source_8h_source.html
deleted file mode 100644
index c3dd410..0000000
--- a/doc/doxygen/html/matrix__prod__col__row__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__col__row__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_rows;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...col_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size * A_internal_rows;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_col_row_row_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp.html b/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp.html
deleted file mode 100644
index a1e7ae9..0000000
--- a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products.
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__prod__kernel__class__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp_source.html b/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp_source.html
deleted file mode 100644
index 3b6c0d6..0000000
--- a/doc/doxygen/html/matrix__prod__kernel__class__deducer_8hpp_source.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_prod_kernel_class_deducer.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__kernel__class__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__prod__col__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</a>"</span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</a>"</span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</a>"</span>
-<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</a>"</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a>00035 <span class="preprocessor">#include <vector></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include <map></span>
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>viennacl
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">namespace </span>tools
-<a name="l00041"></a>00041 {
-<a name="l00043"></a>00043 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1, <span class="keyword">typename</span> MatrixType2, <span class="keyword">typename</span> MatrixType3>
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">00044</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>
-<a name="l00045"></a>00045 {};
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00048"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">00048</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00049"></a>00049 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00050"></a>00050 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00051"></a>00051 {
-<a name="l00052"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">00052</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_row_row<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00053"></a>00053 };
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00056"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">00056</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00057"></a>00057 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00058"></a>00058 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00059"></a>00059 {
-<a name="l00060"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">00060</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_row_col<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00061"></a>00061 };
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00064"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">00064</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00065"></a>00065 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00066"></a>00066 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00067"></a>00067 {
-<a name="l00068"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">00068</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_col_row<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00069"></a>00069 };
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00072"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">00072</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00073"></a>00073 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00074"></a>00074 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00075"></a>00075 {
-<a name="l00076"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">00076</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_row_col_col<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00077"></a>00077 };
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00081"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">00081</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00082"></a>00082 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00083"></a>00083 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00084"></a>00084 {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">00085</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_row_row<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00086"></a>00086 };
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00089"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">00089</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00090"></a>00090 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00091"></a>00091 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00092"></a>00092 {
-<a name="l00093"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">00093</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_row_col<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00094"></a>00094 };
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00097"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">00097</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00098"></a>00098 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00099"></a>00099 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00100"></a>00100 {
-<a name="l00101"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">00101</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_col_row<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00102"></a>00102 };
-<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00105"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">00105</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectivel...">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00106"></a>00106 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00107"></a>00107 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00108"></a>00108 {
-<a name="l00109"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">00109</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_prod_col_col_col<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00110"></a>00110 };
-<a name="l00111"></a>00111
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h.html
deleted file mode 100644
index f9ff0f4..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__col__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h_source.html
deleted file mode 100644
index ff3b84a..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_col_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_row_col_col;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_row_col_col<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_col_col_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_row_col_col<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_col_col_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__source_8h.html b/doc/doxygen/html/matrix__prod__row__col__col__source_8h.html
deleted file mode 100644
index 7b44a71..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__col__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__col__source_8h_source.html
deleted file mode 100644
index d0d69cf..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_col_col_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h.html
deleted file mode 100644
index 324ed35..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__col__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_col_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__col__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h_source.html
deleted file mode 100644
index a49647b..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__col__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_col_row_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_row_col_row;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_row_col_row<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_col_row_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_row_col_row<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_col_row_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__source_8h.html b/doc/doxygen/html/matrix__prod__row__col__row__source_8h.html
deleted file mode 100644
index 10a4180..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__col__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__col__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__col__row__source_8h_source.html
deleted file mode 100644
index 2acf058..0000000
--- a/doc/doxygen/html/matrix__prod__row__col__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__col__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_rows;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...col_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size * B_internal_rows;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_col_row_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h.html
deleted file mode 100644
index 6499422..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__col__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__row__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h_source.html
deleted file mode 100644
index 5000916..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__col__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_col_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_row_row_col;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_row_row_col<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_row_col_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_row_row_col<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_row_col_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__source_8h.html b/doc/doxygen/html/matrix__prod__row__row__col__source_8h.html
deleted file mode 100644
index e56af0a..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__row__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__col__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__col__source_8h_source.html
deleted file mode 100644
index 615d1bc..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__col__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...col_major, A...row_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_row_col_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h.html b/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h.html
deleted file mode 100644
index 0f7553d..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__prod__row__row__row__source_8h_source.html">viennacl/linalg/kernels/matrix_prod_row_row_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__prod__row__row__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h_source.html
deleted file mode 100644
index e2dcad1..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__kernels_8h_source.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__prod__row__row__row__source_8h.html">viennacl/linalg/kernels/matrix_prod_row_row_row_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_prod_row_row_row;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_prod_row_row_row<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_prod_row_row_row_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a>);
-<a name="l00040"></a>00040 std::string prog_name = program_name();
-<a name="l00041"></a>00041 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00043"></a>00043 <span class="preprocessor"> #endif</span>
-<a name="l00044"></a>00044 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00045"></a>00045 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00046"></a>00046 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00047"></a>00047 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00048"></a>00048 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00049"></a>00049 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00050"></a>00050 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00051"></a>00051 } <span class="comment">//if</span>
-<a name="l00052"></a>00052 } <span class="comment">//init</span>
-<a name="l00053"></a>00053 }; <span class="comment">// struct</span>
-<a name="l00054"></a>00054
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056
-<a name="l00058"></a>00058 <span class="keyword">template</span> <>
-<a name="l00059"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">00059</a> <span class="keyword">struct </span>matrix_prod_row_row_row<double, 1>
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00061</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_prod_row_row_row_1"</span>;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00065</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00069"></a>00069 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 std::string source;
-<a name="l00073"></a>00073 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00074"></a>00074 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a>, fp64_ext));
-<a name="l00075"></a>00075 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a>, fp64_ext));
-<a name="l00076"></a>00076 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a>, fp64_ext));
-<a name="l00077"></a>00077 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a>, fp64_ext));
-<a name="l00078"></a>00078 std::string prog_name = program_name();
-<a name="l00079"></a>00079 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00080"></a>00080 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TT"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_TA"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AA"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"prod_AT"</span>);
-<a name="l00088"></a>00088 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00089"></a>00089 } <span class="comment">//if</span>
-<a name="l00090"></a>00090 } <span class="comment">//init</span>
-<a name="l00091"></a>00091 }; <span class="comment">// struct</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 } <span class="comment">//namespace kernels</span>
-<a name="l00095"></a>00095 } <span class="comment">//namespace linalg</span>
-<a name="l00096"></a>00096 } <span class="comment">//namespace viennacl</span>
-<a name="l00097"></a>00097 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__source_8h.html b/doc/doxygen/html/matrix__prod__row__row__row__source_8h.html
deleted file mode 100644
index 034e4cf..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__source_8h.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__prod__row__row__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__prod__row__row__row__source_8h_source.html b/doc/doxygen/html/matrix__prod__row__row__row__source_8h_source.html
deleted file mode 100644
index 8040e2f..0000000
--- a/doc/doxygen/html/matrix__prod__row__row__row__source_8h_source.html
+++ /dev/null
@@ -1,298 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__prod__row__row__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void prod_TT(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">"{ \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" {\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" else\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" else\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" }\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_TT</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// matrix-matrix multiplication C = A^T * B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void prod_TA(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"{ \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" int aBegin = row_block_id * block_size;\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" int aStep = block_size * A_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" int block_num = A_rows / block_size;\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" if (block_num * block_size != A_rows)\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" {\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" else\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" else\n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" }\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"}\n"</span>
-<a name="l00132"></a>00132 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_TA</span>
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">00134</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> =
-<a name="l00135"></a>00135 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">"// matrix-matrix multiplication C = A * B\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void prod_AA(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"{ \n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" int bBegin = col_block_id * block_size;\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" int bStep = block_size * B_internal_cols;\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" {\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" else\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" else\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" }\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"}\n"</span>
-<a name="l00194"></a>00194 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_AA</span>
-<a name="l00195"></a>00195
-<a name="l00196"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">00196</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> =
-<a name="l00197"></a>00197 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">"// matrix-matrix multiplication C = A * B^T\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">"// matrix layouts: C...row_major, A...row_major, B...row_major\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">"__kernel void prod_AT(\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global const float * B, \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" unsigned int B_internal_cols,\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" __global float * C,\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" unsigned int C_rows,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int C_cols,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int C_internal_rows,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int C_internal_cols,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" __local float * bufA,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __local float * bufB) \n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{ \n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" int block_size = get_local_size(0);\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" int row_block_id = get_group_id(0);\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" int col_block_id = get_group_id(1);\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" int row_thread_id = get_local_id(0);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" int col_thread_id = get_local_id(1);\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" int aBegin = row_block_id * block_size * A_internal_cols;\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" int aStep = block_size;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" int bBegin = col_block_id * block_size * B_internal_cols;\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" int bStep = block_size;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" int block_num = A_cols / block_size;\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" if (block_num * block_size != A_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">" ++block_num;\n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float Csub = 0;\n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" for (int block = 0;\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" block < block_num;\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" ++block)\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" {\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" else\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"</span>
-<a name="l00243"></a>00243 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">" else\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" for (int k = 0; k < block_size; ++k)\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" aBegin += aStep;\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" bBegin += bStep;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" }\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">"}\n"</span>
-<a name="l00256"></a>00256 ; <span class="comment">//matrix_prod_row_row_row_align1_prod_AT</span>
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258 } <span class="comment">//namespace kernels</span>
-<a name="l00259"></a>00259 } <span class="comment">//namespace linalg</span>
-<a name="l00260"></a>00260 } <span class="comment">//namespace viennacl</span>
-<a name="l00261"></a>00261 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__kernels_8h.html b/doc/doxygen/html/matrix__row__kernels_8h.html
deleted file mode 100644
index 8e3d48e..0000000
--- a/doc/doxygen/html/matrix__row__kernels_8h.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__row__source_8h_source.html">viennacl/linalg/kernels/matrix_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__kernels_8h_source.html b/doc/doxygen/html/matrix__row__kernels_8h_source.html
deleted file mode 100644
index 84f9893..0000000
--- a/doc/doxygen/html/matrix__row__kernels_8h_source.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__row__source_8h.html">viennacl/linalg/kernels/matrix_row_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_row;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">00022</a> <span class="keyword">struct </span>matrix_row<float, 16>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_row_16"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00052"></a>00052 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>);
-<a name="l00053"></a>00053 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>);
-<a name="l00054"></a>00054 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>);
-<a name="l00055"></a>00055 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>);
-<a name="l00056"></a>00056 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00057"></a>00057 std::string prog_name = program_name();
-<a name="l00058"></a>00058 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00060"></a>00060 <span class="preprocessor"> #endif</span>
-<a name="l00061"></a>00061 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00062"></a>00062 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00063"></a>00063 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00064"></a>00064 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00065"></a>00065 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00066"></a>00066 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00067"></a>00067 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00068"></a>00068 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00069"></a>00069 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00070"></a>00070 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00074"></a>00074 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00075"></a>00075 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00076"></a>00076 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00077"></a>00077 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00078"></a>00078 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00079"></a>00079 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00080"></a>00080 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00081"></a>00081 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00082"></a>00082 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00083"></a>00083 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00084"></a>00084 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00085"></a>00085 } <span class="comment">//if</span>
-<a name="l00086"></a>00086 } <span class="comment">//init</span>
-<a name="l00087"></a>00087 }; <span class="comment">// struct</span>
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <span class="keyword">template</span> <>
-<a name="l00090"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">00090</a> <span class="keyword">struct </span>matrix_row<float, 1>
-<a name="l00091"></a>00091 {
-<a name="l00092"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00092</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00093"></a>00093 {
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_row_1"</span>;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00096</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00097"></a>00097 {
-<a name="l00098"></a>00098 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00099"></a>00099 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00100"></a>00100 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 std::string source;
-<a name="l00104"></a>00104 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00105"></a>00105 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>);
-<a name="l00106"></a>00106 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>);
-<a name="l00107"></a>00107 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>);
-<a name="l00108"></a>00108 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>);
-<a name="l00109"></a>00109 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>);
-<a name="l00110"></a>00110 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00111"></a>00111 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>);
-<a name="l00112"></a>00112 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>);
-<a name="l00113"></a>00113 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>);
-<a name="l00114"></a>00114 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>);
-<a name="l00115"></a>00115 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>);
-<a name="l00116"></a>00116 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>);
-<a name="l00117"></a>00117 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>);
-<a name="l00118"></a>00118 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>);
-<a name="l00119"></a>00119 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>);
-<a name="l00120"></a>00120 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>);
-<a name="l00121"></a>00121 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>);
-<a name="l00122"></a>00122 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>);
-<a name="l00123"></a>00123 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>);
-<a name="l00124"></a>00124 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>);
-<a name="l00125"></a>00125 std::string prog_name = program_name();
-<a name="l00126"></a>00126 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00128"></a>00128 <span class="preprocessor"> #endif</span>
-<a name="l00129"></a>00129 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00130"></a>00130 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00131"></a>00131 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00133"></a>00133 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00136"></a>00136 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00137"></a>00137 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00138"></a>00138 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00139"></a>00139 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00140"></a>00140 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00141"></a>00141 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00142"></a>00142 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00143"></a>00143 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00144"></a>00144 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00145"></a>00145 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00146"></a>00146 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00147"></a>00147 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00148"></a>00148 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00149"></a>00149 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00150"></a>00150 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00151"></a>00151 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00152"></a>00152 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00153"></a>00153 } <span class="comment">//if</span>
-<a name="l00154"></a>00154 } <span class="comment">//init</span>
-<a name="l00155"></a>00155 }; <span class="comment">// struct</span>
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158
-<a name="l00160"></a>00160 <span class="keyword">template</span> <>
-<a name="l00161"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">00161</a> <span class="keyword">struct </span>matrix_row<double, 16>
-<a name="l00162"></a>00162 {
-<a name="l00163"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00163</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00164"></a>00164 {
-<a name="l00165"></a>00165 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_row_16"</span>;
-<a name="l00166"></a>00166 }
-<a name="l00167"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00167</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00168"></a>00168 {
-<a name="l00169"></a>00169 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00170"></a>00170 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00171"></a>00171 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00172"></a>00172 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 std::string source;
-<a name="l00175"></a>00175 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00176"></a>00176 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00177"></a>00177 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>, fp64_ext));
-<a name="l00178"></a>00178 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00179"></a>00179 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00180"></a>00180 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>, fp64_ext));
-<a name="l00181"></a>00181 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>, fp64_ext));
-<a name="l00182"></a>00182 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00183"></a>00183 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>, fp64_ext));
-<a name="l00184"></a>00184 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>, fp64_ext));
-<a name="l00185"></a>00185 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>, fp64_ext));
-<a name="l00186"></a>00186 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00187"></a>00187 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>, fp64_ext));
-<a name="l00188"></a>00188 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00189"></a>00189 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00190"></a>00190 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>, fp64_ext));
-<a name="l00191"></a>00191 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00192"></a>00192 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00193"></a>00193 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>, fp64_ext));
-<a name="l00194"></a>00194 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00195"></a>00195 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>, fp64_ext));
-<a name="l00196"></a>00196 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00197"></a>00197 std::string prog_name = program_name();
-<a name="l00198"></a>00198 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00199"></a>00199 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00200"></a>00200 <span class="preprocessor"> #endif</span>
-<a name="l00201"></a>00201 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00202"></a>00202 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00203"></a>00203 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00204"></a>00204 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00205"></a>00205 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00206"></a>00206 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00207"></a>00207 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00208"></a>00208 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00209"></a>00209 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00210"></a>00210 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00211"></a>00211 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00212"></a>00212 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00213"></a>00213 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00214"></a>00214 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00216"></a>00216 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00217"></a>00217 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00218"></a>00218 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00219"></a>00219 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00220"></a>00220 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00221"></a>00221 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00222"></a>00222 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00223"></a>00223 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00224"></a>00224 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00225"></a>00225 } <span class="comment">//if</span>
-<a name="l00226"></a>00226 } <span class="comment">//init</span>
-<a name="l00227"></a>00227 }; <span class="comment">// struct</span>
-<a name="l00228"></a>00228
-<a name="l00229"></a>00229 <span class="keyword">template</span> <>
-<a name="l00230"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">00230</a> <span class="keyword">struct </span>matrix_row<double, 1>
-<a name="l00231"></a>00231 {
-<a name="l00232"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00232</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00233"></a>00233 {
-<a name="l00234"></a>00234 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_row_1"</span>;
-<a name="l00235"></a>00235 }
-<a name="l00236"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00236</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00237"></a>00237 {
-<a name="l00238"></a>00238 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00239"></a>00239 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00240"></a>00240 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00241"></a>00241 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 std::string source;
-<a name="l00244"></a>00244 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00245"></a>00245 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00246"></a>00246 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a>, fp64_ext));
-<a name="l00247"></a>00247 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00248"></a>00248 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a>, fp64_ext));
-<a name="l00249"></a>00249 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a>, fp64_ext));
-<a name="l00250"></a>00250 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a>, fp64_ext));
-<a name="l00251"></a>00251 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00252"></a>00252 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a>, fp64_ext));
-<a name="l00253"></a>00253 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a>, fp64_ext));
-<a name="l00254"></a>00254 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a>, fp64_ext));
-<a name="l00255"></a>00255 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00256"></a>00256 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a>, fp64_ext));
-<a name="l00257"></a>00257 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00258"></a>00258 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00259"></a>00259 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a>, fp64_ext));
-<a name="l00260"></a>00260 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00261"></a>00261 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a>, fp64_ext));
-<a name="l00262"></a>00262 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a>, fp64_ext));
-<a name="l00263"></a>00263 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00264"></a>00264 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a>, fp64_ext));
-<a name="l00265"></a>00265 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a>, fp64_ext));
-<a name="l00266"></a>00266 std::string prog_name = program_name();
-<a name="l00267"></a>00267 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00268"></a>00268 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00269"></a>00269 <span class="preprocessor"> #endif</span>
-<a name="l00270"></a>00270 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00271"></a>00271 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00272"></a>00272 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00273"></a>00273 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00274"></a>00274 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_triangular_substitute_inplace"</span>);
-<a name="l00275"></a>00275 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_vec_mul"</span>);
-<a name="l00276"></a>00276 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"rank1_update"</span>);
-<a name="l00277"></a>00277 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00278"></a>00278 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00279"></a>00279 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lu_factorize"</span>);
-<a name="l00280"></a>00280 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00281"></a>00281 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vec_mul"</span>);
-<a name="l00282"></a>00282 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_triangular_substitute_inplace"</span>);
-<a name="l00283"></a>00283 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00284"></a>00284 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_triangular_substitute_inplace"</span>);
-<a name="l00285"></a>00285 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_triangular_substitute_inplace"</span>);
-<a name="l00286"></a>00286 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00287"></a>00287 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_triangular_substitute_inplace"</span>);
-<a name="l00288"></a>00288 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"scaled_rank1_update"</span>);
-<a name="l00289"></a>00289 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00290"></a>00290 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00291"></a>00291 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00292"></a>00292 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_triangular_substitute_inplace"</span>);
-<a name="l00293"></a>00293 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00294"></a>00294 } <span class="comment">//if</span>
-<a name="l00295"></a>00295 } <span class="comment">//init</span>
-<a name="l00296"></a>00296 }; <span class="comment">// struct</span>
-<a name="l00297"></a>00297
-<a name="l00298"></a>00298
-<a name="l00299"></a>00299 } <span class="comment">//namespace kernels</span>
-<a name="l00300"></a>00300 } <span class="comment">//namespace linalg</span>
-<a name="l00301"></a>00301 } <span class="comment">//namespace viennacl</span>
-<a name="l00302"></a>00302 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__source_8h.html b/doc/doxygen/html/matrix__row__source_8h.html
deleted file mode 100644
index d22511d..0000000
--- a/doc/doxygen/html/matrix__row__source_8h.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__row__source_8h_source.html b/doc/doxygen/html/matrix__row__source_8h_source.html
deleted file mode 100644
index a482297..0000000
--- a/doc/doxygen/html/matrix__row__source_8h_source.html
+++ /dev/null
@@ -1,452 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_row_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"{\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" {\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" }\n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"}\n"</span>
-<a name="l00028"></a>00028 ; <span class="comment">//matrix_row_align1_unit_lower_triangular_substitute_inplace</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">00030</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> =
-<a name="l00031"></a>00031 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">"{ \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" vec1[i] -= vec2[i];\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_row_align1_inplace_sub</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> =
-<a name="l00042"></a>00042 <span class="stringliteral">"__kernel void lower_triangular_substitute_inplace(\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"{\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" {\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" vector[row] /= matrix[row+row*matrix_internal_cols];\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" }\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">"}\n"</span>
-<a name="l00062"></a>00062 ; <span class="comment">//matrix_row_align1_lower_triangular_substitute_inplace</span>
-<a name="l00063"></a>00063
-<a name="l00064"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">00064</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> =
-<a name="l00065"></a>00065 <span class="stringliteral">"__kernel void trans_vec_mul(\n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00071"></a>00071 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00072"></a>00072 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">"{ \n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">" //row and col indicate indices within transposed matrix\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">" {\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" float dot_prod2 = 0.0f;\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_rows; ++col)\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" dot_prod2 += matrix[row + col*matrix_internal_cols] * vector[col];\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" result[row] = dot_prod2;\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" }\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"}\n"</span>
-<a name="l00083"></a>00083 ; <span class="comment">//matrix_row_align1_trans_vec_mul</span>
-<a name="l00084"></a>00084
-<a name="l00085"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">00085</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> =
-<a name="l00086"></a>00086 <span class="stringliteral">"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"__kernel void rank1_update(\n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" __global float * matrix,\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" __global const float * vector1, \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" __global const float * vector2) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">"{ \n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" float tmp;\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" unsigned int offset;\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" {\n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">" tmp = vector1[row];\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" offset = row*matrix_internal_cols;\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">" matrix[offset+col] += tmp * vector2[col];\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" }\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">"}\n"</span>
-<a name="l00106"></a>00106 ; <span class="comment">//matrix_row_align1_rank1_update</span>
-<a name="l00107"></a>00107
-<a name="l00108"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">00108</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> =
-<a name="l00109"></a>00109 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" __global const float * vec2, \n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" unsigned int size)\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">"{ \n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"}\n"</span>
-<a name="l00118"></a>00118 ; <span class="comment">//matrix_row_align1_sub</span>
-<a name="l00119"></a>00119
-<a name="l00120"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">00120</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> =
-<a name="l00121"></a>00121 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"{ \n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">" { \n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" } \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" \n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">"}\n"</span>
-<a name="l00141"></a>00141 ; <span class="comment">//matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</span>
-<a name="l00142"></a>00142
-<a name="l00143"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">00143</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> =
-<a name="l00144"></a>00144 <span class="stringliteral">"__kernel void lu_factorize(\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" __global float * matrix,\n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" unsigned int matrix_internal_cols) \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"{ \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned rowi;\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" unsigned rowk;\n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" for (unsigned int i=1; i<matrix_rows; ++i)\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" {\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">" rowi = i * matrix_internal_cols;\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">" for (unsigned int k=0; k<i; ++k)\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" {\n"</span>
-<a name="l00159"></a>00159 <span class="stringliteral">" rowk = k * matrix_internal_cols;\n"</span>
-<a name="l00160"></a>00160 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">" matrix[rowi + k] /= matrix[rowk + k];\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" temp = matrix[rowi + k];\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" \n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" //parallel subtraction:\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" for (unsigned int j=k+1 + get_global_id(0); j<matrix_rows; j += get_global_size(0))\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" matrix[rowi + j] -= temp * matrix[rowk + j];\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" }\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" }\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">"} \n"</span>
-<a name="l00171"></a>00171 ; <span class="comment">//matrix_row_align1_lu_factorize</span>
-<a name="l00172"></a>00172
-<a name="l00173"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">00173</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> =
-<a name="l00174"></a>00174 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" __global const float * vec2, \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"{ \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"}\n"</span>
-<a name="l00183"></a>00183 ; <span class="comment">//matrix_row_align1_add</span>
-<a name="l00184"></a>00184
-<a name="l00185"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">00185</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> =
-<a name="l00186"></a>00186 <span class="stringliteral">"\n"</span>
-<a name="l00187"></a>00187 <span class="stringliteral">"\n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"__kernel void vec_mul(\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" __global const float * vector, \n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"{ \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">" {\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">" float dot_prod = 0.0f;\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">" dot_prod += matrix[row*matrix_internal_cols + col] * vector[col];\n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" result[row] = dot_prod;\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" }\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">"}\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">"\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"\n"</span>
-<a name="l00208"></a>00208 ; <span class="comment">//matrix_row_align1_vec_mul</span>
-<a name="l00209"></a>00209
-<a name="l00210"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">00210</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> =
-<a name="l00211"></a>00211 <span class="stringliteral">"__kernel void trans_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00215"></a>00215 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00216"></a>00216 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"{\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" {\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" vector[row] /= matrix[row+row*matrix_internal_cols];\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" }\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"}\n"</span>
-<a name="l00231"></a>00231 ; <span class="comment">//matrix_row_align1_trans_lower_triangular_substitute_inplace</span>
-<a name="l00232"></a>00232
-<a name="l00233"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">00233</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> =
-<a name="l00234"></a>00234 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">"{ \n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00241"></a>00241 <span class="stringliteral">" vec[i] /= factor;\n"</span>
-<a name="l00242"></a>00242 <span class="stringliteral">"}\n"</span>
-<a name="l00243"></a>00243 ; <span class="comment">//matrix_row_align1_inplace_divide</span>
-<a name="l00244"></a>00244
-<a name="l00245"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">00245</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> =
-<a name="l00246"></a>00246 <span class="stringliteral">"//transposed lower triangular matrix\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void trans_upper_triangular_substitute_inplace(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">"{ \n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" { \n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">" if (get_global_id(0) == 0) \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">" vector[row] /= matrix[row*matrix_internal_cols + row]; \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">" } \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">"}\n"</span>
-<a name="l00270"></a>00270 ; <span class="comment">//matrix_row_align1_trans_upper_triangular_substitute_inplace</span>
-<a name="l00271"></a>00271
-<a name="l00272"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">00272</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> =
-<a name="l00273"></a>00273 <span class="stringliteral">"__kernel void unit_upper_triangular_substitute_inplace( \n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"{ \n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">" { \n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">" } \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">" \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">"}\n"</span>
-<a name="l00292"></a>00292 ; <span class="comment">//matrix_row_align1_unit_upper_triangular_substitute_inplace</span>
-<a name="l00293"></a>00293
-<a name="l00294"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">00294</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> =
-<a name="l00295"></a>00295 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">"{ \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">" vec1[i] += vec2[i];\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_row_align1_inplace_add</span>
-<a name="l00304"></a>00304
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> =
-<a name="l00306"></a>00306 <span class="stringliteral">"\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">" __global const float * matrix,\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" __global float * vector)\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">"{\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" float temp;\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">" for (int row = 0; row < matrix_rows; ++row)\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">" {\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">"\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">" temp = vector[row];\n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">"\n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">" }\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"}\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">"\n"</span>
-<a name="l00328"></a>00328 ; <span class="comment">//matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</span>
-<a name="l00329"></a>00329
-<a name="l00330"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">00330</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> =
-<a name="l00331"></a>00331 <span class="stringliteral">"__kernel void scaled_rank1_update(\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">" __global float * matrix,\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">" float val,\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">" __global const float * vector1, \n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">" __global const float * vector2) \n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"{ \n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">" float tmp;\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">" unsigned int offset;\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" {\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" tmp = val * vector1[row];\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">" offset = row * matrix_internal_cols;\n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" for (unsigned int col = 0; col < matrix_cols; ++col)\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" matrix[offset+col] += tmp * vector2[col];\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">" }\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"}\n"</span>
-<a name="l00351"></a>00351 ; <span class="comment">//matrix_row_align1_scaled_rank1_update</span>
-<a name="l00352"></a>00352
-<a name="l00353"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">00353</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> =
-<a name="l00354"></a>00354 <span class="stringliteral">"__kernel void clear(\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">"{ \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" vec[i] = 0;\n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"}\n"</span>
-<a name="l00361"></a>00361 ; <span class="comment">//matrix_row_align1_clear</span>
-<a name="l00362"></a>00362
-<a name="l00363"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">00363</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> =
-<a name="l00364"></a>00364 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">" float factor, \n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">"{ \n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"}\n"</span>
-<a name="l00372"></a>00372 ; <span class="comment">//matrix_row_align1_cpu_inplace_mult</span>
-<a name="l00373"></a>00373
-<a name="l00374"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">00374</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> =
-<a name="l00375"></a>00375 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" __global const float * fac, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">"{ \n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">"}\n"</span>
-<a name="l00384"></a>00384 ; <span class="comment">//matrix_row_align1_inplace_mult</span>
-<a name="l00385"></a>00385
-<a name="l00386"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">00386</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> =
-<a name="l00387"></a>00387 <span class="stringliteral">"__kernel void upper_triangular_substitute_inplace( \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">" __global const float * matrix, \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">" unsigned int matrix_rows,\n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" unsigned int matrix_cols,\n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" unsigned int matrix_internal_rows,\n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" unsigned int matrix_internal_cols,\n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" __global float * vector) \n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">"{ \n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">" for (int row = matrix_rows-1; row > -1; --row) \n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">" { \n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00399"></a>00399 <span class="stringliteral">" if (get_global_id(0) == 0) \n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">" vector[row] /= matrix[row*matrix_internal_cols + row]; \n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">" \n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">" temp = vector[row]; \n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">" //eliminate column with index 'row' in parallel: \n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">" } \n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">" \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">"}\n"</span>
-<a name="l00410"></a>00410 ; <span class="comment">//matrix_row_align1_upper_triangular_substitute_inplace</span>
-<a name="l00411"></a>00411
-<a name="l00412"></a>00412 } <span class="comment">//namespace kernels</span>
-<a name="l00413"></a>00413 } <span class="comment">//namespace linalg</span>
-<a name="l00414"></a>00414 } <span class="comment">//namespace viennacl</span>
-<a name="l00415"></a>00415 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__size__deducer_8hpp.html b/doc/doxygen/html/matrix__size__deducer_8hpp.html
deleted file mode 100644
index e93c62e..0000000
--- a/doc/doxygen/html/matrix__size__deducer_8hpp.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Helper implementations that deduce the dimensions of the supplied matrix-valued expressions.
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="adapter_8hpp_source.html">viennacl/tools/adapter.hpp</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__size__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Helper implementations that deduce the dimensions of the supplied matrix-valued expressions. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__size__deducer_8hpp_source.html b/doc/doxygen/html/matrix__size__deducer_8hpp_source.html
deleted file mode 100644
index 702df1f..0000000
--- a/doc/doxygen/html/matrix__size__deducer_8hpp_source.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_size_deducer.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__size__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="adapter_8hpp.html" title="Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int...">viennacl/tools/adapter.hpp</a>"</span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>tools
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00042"></a>00042 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00043"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">00043</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a>
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 <span class="comment">//Standard case: size1 from lhs, size2 from rhs (fits most cases)</span>
-<a name="l00046"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">00046</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(LHS & lhs, RHS & rhs) { <span class="keywordflow">return</span> lhs.size1(); }
-<a name="l00047"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">00047</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(LHS & lhs, RHS & rhs) { <span class="keywordflow">return</span> rhs.size2(); }
-<a name="l00048"></a>00048 };
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="comment">//special case: outer vector product:</span>
-<a name="l00051"></a>00051 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00052"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">00052</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a><viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A1>,
-<a name="l00053"></a>00053 viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A2>,
-<a name="l00054"></a>00054 viennacl::op_prod>
-<a name="l00055"></a>00055 {
-<a name="l00056"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">00056</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A1></a> & lhs,
-<a name="l00057"></a>00057 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A2></a> & rhs) { <span class="keywordflow">return</span> lhs.size1(); }
-<a name="l00058"></a>00058
-<a name="l00059"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">00059</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A1></a> & lhs,
-<a name="l00060"></a>00060 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A2></a> & rhs) { <span class="keywordflow">return</span> rhs.size2(); }
-<a name="l00061"></a>00061 };
-<a name="l00062"></a>00062
-<a name="l00063"></a>00063 <span class="comment">//special case: transposed matrix-Something product: Return the number of rows of the matrix</span>
-<a name="l00064"></a>00064 <span class="comment">/*template <typename MatrixType, typename ScalarType, unsigned int A></span>
-<a name="l00065"></a>00065 <span class="comment"> struct MATRIX_SIZE_DEDUCER<MatrixType, const viennacl::vector<ScalarType, A>, viennacl::op_prod></span>
-<a name="l00066"></a>00066 <span class="comment"> {</span>
-<a name="l00067"></a>00067 <span class="comment"> static unsigned int size(MatrixType & lhs, const viennacl::vector<ScalarType, A> & rhs) { return lhs.size1(); }</span>
-<a name="l00068"></a>00068 <span class="comment"> };*/</span>
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00071"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">00071</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><const viennacl::matrix<ScalarType, F1, A1>,
-<a name="l00072"></a>00072 const viennacl::matrix<ScalarType, F1, A1>, op_trans>,
-<a name="l00073"></a>00073 const viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><ScalarType, F2, A2>,
-<a name="l00074"></a>00074 viennacl::op_prod>
-<a name="l00075"></a>00075 {
-<a name="l00076"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">00076</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(<a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00077"></a>00077 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00078"></a>00078 op_trans> <span class="keyword">const</span> & lhs,
-<a name="l00079"></a>00079 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> lhs.lhs().size2(); }
-<a name="l00080"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">00080</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(<a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00081"></a>00081 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a>,
-<a name="l00082"></a>00082 op_trans> <span class="keyword">const</span> & lhs,
-<a name="l00083"></a>00083 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> rhs.<a class="code" href="classviennacl_1_1matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>(); }
-<a name="l00084"></a>00084 };
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A1, <span class="keyword">typename</span> F2, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A2>
-<a name="l00087"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">00087</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">MATRIX_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><ScalarType, F1, A1>,
-<a name="l00088"></a>00088 const viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><const viennacl::matrix<ScalarType, F2, A2>,
-<a name="l00089"></a>00089 const viennacl::matrix<ScalarType, F2, A2>, op_trans>,
-<a name="l00090"></a>00090 viennacl::op_prod>
-<a name="l00091"></a>00091 {
-<a name="l00092"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">00092</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a> <span class="keyword">const</span> & lhs,
-<a name="l00093"></a>00093 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00094"></a>00094 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00095"></a>00095 op_trans> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); }
-<a name="l00096"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">00096</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a>(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F1, A1></a> <span class="keyword">const</span> & lhs,
-<a name="l00097"></a>00097 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00098"></a>00098 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F2, A2></a>,
-<a name="l00099"></a>00099 op_trans> <span class="keyword">const</span> & rhs) { <span class="keywordflow">return</span> rhs.lhs().size1(); }
-<a name="l00100"></a>00100 };
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="preprocessor">#endif</span>
-<a name="l00106"></a>00106 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__kernels_8h.html b/doc/doxygen/html/matrix__solve__col__col__kernels_8h.html
deleted file mode 100644
index 0a7ee90..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__col__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__col__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__col__col__kernels_8h_source.html
deleted file mode 100644
index bd12e4f..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__col__source_8h.html">viennacl/linalg/kernels/matrix_solve_col_col_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_solve_col_col;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_solve_col_col<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_col_col_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052 std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor"> #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075 } <span class="comment">//if</span>
-<a name="l00076"></a>00076 } <span class="comment">//init</span>
-<a name="l00077"></a>00077 }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00082"></a>00082 <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">00083</a> <span class="keyword">struct </span>matrix_solve_col_col<double, 1>
-<a name="l00084"></a>00084 {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_col_col_1"</span>;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 std::string source;
-<a name="l00097"></a>00097 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114 std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor"> #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137 } <span class="comment">//if</span>
-<a name="l00138"></a>00138 } <span class="comment">//init</span>
-<a name="l00139"></a>00139 }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143 } <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 } <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__source_8h.html b/doc/doxygen/html/matrix__solve__col__col__source_8h.html
deleted file mode 100644
index 580a710..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__col__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__col__source_8h_source.html b/doc/doxygen/html/matrix__solve__col__col__source_8h_source.html
deleted file mode 100644
index 09d59ce..0000000
--- a/doc/doxygen/html/matrix__solve__col__col__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_col_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_col_col_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> =
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_col_col_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_col_col_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> =
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> =
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_col_col_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> =
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_col_col_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> =
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> =
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> =
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">" }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_col_col_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> =
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">" { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">" }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_col_col_align1_upper_solve</span>
-<a name="l00304"></a>00304
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> =
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">" }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_col_col_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> =
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">" { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">" }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_col_col_align1_lower_solve</span>
-<a name="l00366"></a>00366
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> =
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">" { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">" }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_col_col_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> =
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">" { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">" }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_col_col_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> =
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">" { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">" }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_col_col_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> =
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...col_major, B...col_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">" { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">" }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_col_col_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481
-<a name="l00482"></a>00482 } <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483 } <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 } <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__kernels_8h.html b/doc/doxygen/html/matrix__solve__col__row__kernels_8h.html
deleted file mode 100644
index af7b1a1..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__row__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__col__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__col__row__kernels_8h_source.html
deleted file mode 100644
index 8b1076f..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__row__source_8h.html">viennacl/linalg/kernels/matrix_solve_col_row_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_solve_col_row;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_solve_col_row<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_col_row_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052 std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor"> #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075 } <span class="comment">//if</span>
-<a name="l00076"></a>00076 } <span class="comment">//init</span>
-<a name="l00077"></a>00077 }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00082"></a>00082 <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">00083</a> <span class="keyword">struct </span>matrix_solve_col_row<double, 1>
-<a name="l00084"></a>00084 {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_col_row_1"</span>;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 std::string source;
-<a name="l00097"></a>00097 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114 std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor"> #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137 } <span class="comment">//if</span>
-<a name="l00138"></a>00138 } <span class="comment">//init</span>
-<a name="l00139"></a>00139 }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143 } <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 } <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__source_8h.html b/doc/doxygen/html/matrix__solve__col__row__source_8h.html
deleted file mode 100644
index e37662a..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__col__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__col__row__source_8h_source.html b/doc/doxygen/html/matrix__solve__col__row__source_8h_source.html
deleted file mode 100644
index 22c78c1..0000000
--- a/doc/doxygen/html/matrix__solve__col__row__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_col_row_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__col__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_col_row_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> =
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_col_row_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_col_row_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> =
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> =
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_col_row_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> =
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_col_row_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> =
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> =
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> =
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">" }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_col_row_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> =
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">" { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">" }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_col_row_align1_upper_solve</span>
-<a name="l00304"></a>00304
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> =
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">" }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_col_row_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> =
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">" { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">" }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_col_row_align1_lower_solve</span>
-<a name="l00366"></a>00366
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> =
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">" { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">" }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_col_row_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> =
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">" { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">" }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_col_row_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> =
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">" { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">" }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_col_row_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> =
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...col_major, B...row_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">" { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">" }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_col_row_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481
-<a name="l00482"></a>00482 } <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483 } <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 } <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp.html b/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp.html
deleted file mode 100644
index c36b00b..0000000
--- a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver.
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_col_row_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_col_kernels.h</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_row_kernels.h</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="matrix__solve__kernel__class__deducer_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2 <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp_source.html b/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp_source.html
deleted file mode 100644
index bbdd368..0000000
--- a/doc/doxygen/html/matrix__solve__kernel__class__deducer_8hpp_source.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/matrix_solve_kernel_class_deducer.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__kernel__class__deducer_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__col__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_col_col_kernels.h</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="matrix__solve__col__row__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_col_row_kernels.h</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__col__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_row_col_kernels.h</a>"</span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__row__kernels_8h.html">viennacl/linalg/kernels/matrix_solve_row_row_kernels.h</a>"</span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="preprocessor">#include <vector></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#include <map></span>
-<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>viennacl
-<a name="l00035"></a>00035 {
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>tools
-<a name="l00037"></a>00037 {
-<a name="l00039"></a>00039 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType1, <span class="keyword">typename</span> MatrixType2>
-<a name="l00040"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">00040</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>
-<a name="l00041"></a>00041 {};
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">00044</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00045"></a>00045 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00046"></a>00046 {
-<a name="l00047"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">00047</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_row_row<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00048"></a>00048 };
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00051"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">00051</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT>,
-<a name="l00052"></a>00052 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00053"></a>00053 {
-<a name="l00054"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">00054</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_row_col<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00055"></a>00055 };
-<a name="l00056"></a>00056
-<a name="l00057"></a>00057 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00058"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">00058</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00059"></a>00059 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::row_major, ALIGNMENT> >
-<a name="l00060"></a>00060 {
-<a name="l00061"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">00061</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_col_row<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00064"></a>00064 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00065"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">00065</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html" title="deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT>,
-<a name="l00066"></a>00066 viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><SCALARTYPE, viennacl::column_major, ALIGNMENT> >
-<a name="l00067"></a>00067 {
-<a name="l00068"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">00068</a> <span class="keyword">typedef</span> viennacl::linalg::kernels::matrix_solve_col_col<SCALARTYPE, ALIGNMENT> ResultType;
-<a name="l00069"></a>00069 };
-<a name="l00070"></a>00070
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__kernels_8h.html b/doc/doxygen/html/matrix__solve__row__col__kernels_8h.html
deleted file mode 100644
index 7bb5b44..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__col__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_col_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__row__col__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__row__col__kernels_8h_source.html
deleted file mode 100644
index b5063ce..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__col__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__col__source_8h.html">viennacl/linalg/kernels/matrix_solve_row_col_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_solve_row_col;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_solve_row_col<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_row_col_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052 std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor"> #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075 } <span class="comment">//if</span>
-<a name="l00076"></a>00076 } <span class="comment">//init</span>
-<a name="l00077"></a>00077 }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00082"></a>00082 <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">00083</a> <span class="keyword">struct </span>matrix_solve_row_col<double, 1>
-<a name="l00084"></a>00084 {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_row_col_1"</span>;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 std::string source;
-<a name="l00097"></a>00097 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114 std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor"> #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137 } <span class="comment">//if</span>
-<a name="l00138"></a>00138 } <span class="comment">//init</span>
-<a name="l00139"></a>00139 }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143 } <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 } <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__source_8h.html b/doc/doxygen/html/matrix__solve__row__col__source_8h.html
deleted file mode 100644
index 5ca9c99..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__row__col__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__col__source_8h_source.html b/doc/doxygen/html/matrix__solve__row__col__source_8h_source.html
deleted file mode 100644
index feccd82..0000000
--- a/doc/doxygen/html/matrix__solve__row__col__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_col_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__col__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_row_col_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> =
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_row_col_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_row_col_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> =
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> =
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_row_col_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> =
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_row_col_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> =
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> =
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> =
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">" }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_row_col_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> =
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">" { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">" }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_row_col_align1_upper_solve</span>
-<a name="l00304"></a>00304
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> =
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">" }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_row_col_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> =
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">" { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">" }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_row_col_align1_lower_solve</span>
-<a name="l00366"></a>00366
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> =
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">" { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">" }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_row_col_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> =
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">" { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">" temp = B[row * B_internal_rows + get_group_id(0)]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">" }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_row_col_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> =
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">" { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">" }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_row_col_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> =
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...row_major, B...col_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">" { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_rows]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">" }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_row_col_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481
-<a name="l00482"></a>00482 } <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483 } <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 } <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__kernels_8h.html b/doc/doxygen/html/matrix__solve__row__row__kernels_8h.html
deleted file mode 100644
index 4bfc188..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="matrix__solve__row__row__source_8h_source.html">viennacl/linalg/kernels/matrix_solve_row_row_source.h</a>"</code><br/>
-
-<p><a href="matrix__solve__row__row__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__kernels_8h_source.html b/doc/doxygen/html/matrix__solve__row__row__kernels_8h_source.html
deleted file mode 100644
index f568859..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__row__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="matrix__solve__row__row__source_8h.html">viennacl/linalg/kernels/matrix_solve_row_row_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>matrix_solve_row_row;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span>matrix_solve_row_row<float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_matrix_solve_row_row_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a>);
-<a name="l00052"></a>00052 std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor"> #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00059"></a>00059 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00060"></a>00060 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00061"></a>00061 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00062"></a>00062 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00063"></a>00063 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00064"></a>00064 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00065"></a>00065 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00066"></a>00066 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00067"></a>00067 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00068"></a>00068 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00069"></a>00069 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00070"></a>00070 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00074"></a>00074 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075 } <span class="comment">//if</span>
-<a name="l00076"></a>00076 } <span class="comment">//init</span>
-<a name="l00077"></a>00077 }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00082"></a>00082 <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">00083</a> <span class="keyword">struct </span>matrix_solve_row_row<double, 1>
-<a name="l00084"></a>00084 {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> <span class="stringliteral">"d_matrix_solve_row_row_1"</span>;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 std::string source;
-<a name="l00097"></a>00097 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a>, fp64_ext));
-<a name="l00099"></a>00099 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a>, fp64_ext));
-<a name="l00100"></a>00100 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a>, fp64_ext));
-<a name="l00101"></a>00101 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00102"></a>00102 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a>, fp64_ext));
-<a name="l00103"></a>00103 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00104"></a>00104 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a>, fp64_ext));
-<a name="l00105"></a>00105 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a>, fp64_ext));
-<a name="l00106"></a>00106 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a>, fp64_ext));
-<a name="l00107"></a>00107 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a>, fp64_ext));
-<a name="l00108"></a>00108 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a>, fp64_ext));
-<a name="l00109"></a>00109 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a>, fp64_ext));
-<a name="l00110"></a>00110 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a>, fp64_ext));
-<a name="l00111"></a>00111 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a>, fp64_ext));
-<a name="l00112"></a>00112 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a>, fp64_ext));
-<a name="l00113"></a>00113 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a>, fp64_ext));
-<a name="l00114"></a>00114 std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor"> #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_trans_solve"</span>);
-<a name="l00121"></a>00121 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_trans_solve"</span>);
-<a name="l00122"></a>00122 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_solve"</span>);
-<a name="l00123"></a>00123 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_trans_solve"</span>);
-<a name="l00124"></a>00124 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_upper_solve"</span>);
-<a name="l00125"></a>00125 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_lower_trans_solve"</span>);
-<a name="l00126"></a>00126 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_upper_solve"</span>);
-<a name="l00127"></a>00127 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_trans_solve"</span>);
-<a name="l00128"></a>00128 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_trans_solve"</span>);
-<a name="l00129"></a>00129 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"upper_solve"</span>);
-<a name="l00130"></a>00130 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_trans_solve"</span>);
-<a name="l00131"></a>00131 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"lower_solve"</span>);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_lower_solve"</span>);
-<a name="l00133"></a>00133 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_trans_solve"</span>);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"unit_upper_solve"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"trans_unit_lower_solve"</span>);
-<a name="l00136"></a>00136 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137 } <span class="comment">//if</span>
-<a name="l00138"></a>00138 } <span class="comment">//init</span>
-<a name="l00139"></a>00139 }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143 } <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 } <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__source_8h.html b/doc/doxygen/html/matrix__solve__row__row__source_8h.html
deleted file mode 100644
index a829b27..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="matrix__solve__row__row__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/matrix__solve__row__row__source_8h_source.html b/doc/doxygen/html/matrix__solve__row__row__source_8h_source.html
deleted file mode 100644
index 2a8b402..0000000
--- a/doc/doxygen/html/matrix__solve__row__row__source_8h_source.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/matrix_solve_row_row_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="matrix__solve__row__row__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">"__kernel void upper_trans_solve(\n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00020"></a>00020 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00021"></a>00021 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00022"></a>00022 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">"{ \n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" { \n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00033"></a>00033 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00034"></a>00034 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00035"></a>00035 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" }\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">"}\n"</span>
-<a name="l00039"></a>00039 ; <span class="comment">//matrix_solve_row_row_align1_upper_trans_solve</span>
-<a name="l00040"></a>00040
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">00041</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> =
-<a name="l00042"></a>00042 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00045"></a>00045 <span class="stringliteral">"__kernel void trans_upper_trans_solve(\n"</span>
-<a name="l00046"></a>00046 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00047"></a>00047 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"{ \n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00058"></a>00058 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00059"></a>00059 <span class="stringliteral">" { \n"</span>
-<a name="l00060"></a>00060 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" }\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 ; <span class="comment">//matrix_solve_row_row_align1_trans_upper_trans_solve</span>
-<a name="l00071"></a>00071
-<a name="l00072"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">00072</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> =
-<a name="l00073"></a>00073 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">"__kernel void unit_lower_solve(\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00084"></a>00084 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">"{ \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" { \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00096"></a>00096 <span class="stringliteral">" }\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">"}\n"</span>
-<a name="l00098"></a>00098 ; <span class="comment">//matrix_solve_row_row_align1_unit_lower_solve</span>
-<a name="l00099"></a>00099
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">00100</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> =
-<a name="l00101"></a>00101 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">"__kernel void trans_unit_upper_trans_solve(\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">"{ \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" { \n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00121"></a>00121 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" }\n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"}\n"</span>
-<a name="l00126"></a>00126 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_upper_trans_solve</span>
-<a name="l00127"></a>00127
-<a name="l00128"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">00128</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> =
-<a name="l00129"></a>00129 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"__kernel void trans_upper_solve(\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"{ \n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00146"></a>00146 <span class="stringliteral">" { \n"</span>
-<a name="l00147"></a>00147 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" }\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">"}\n"</span>
-<a name="l00157"></a>00157 ; <span class="comment">//matrix_solve_row_row_align1_trans_upper_solve</span>
-<a name="l00158"></a>00158
-<a name="l00159"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">00159</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> =
-<a name="l00160"></a>00160 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00161"></a>00161 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void unit_lower_trans_solve(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00172"></a>00172 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00173"></a>00173 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00174"></a>00174 <span class="stringliteral">"{ \n"</span>
-<a name="l00175"></a>00175 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" { \n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" }\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">"}\n"</span>
-<a name="l00185"></a>00185 ; <span class="comment">//matrix_solve_row_row_align1_unit_lower_trans_solve</span>
-<a name="l00186"></a>00186
-<a name="l00187"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">00187</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> =
-<a name="l00188"></a>00188 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">"__kernel void trans_unit_upper_solve(\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00202"></a>00202 <span class="stringliteral">"{ \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" { \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" }\n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">"}\n"</span>
-<a name="l00213"></a>00213 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_upper_solve</span>
-<a name="l00214"></a>00214
-<a name="l00215"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">00215</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> =
-<a name="l00216"></a>00216 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00217"></a>00217 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00218"></a>00218 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">"__kernel void trans_unit_lower_trans_solve(\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00229"></a>00229 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00230"></a>00230 <span class="stringliteral">"{ \n"</span>
-<a name="l00231"></a>00231 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00232"></a>00232 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" { \n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">" }\n"</span>
-<a name="l00240"></a>00240 <span class="stringliteral">"}\n"</span>
-<a name="l00241"></a>00241 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_lower_trans_solve</span>
-<a name="l00242"></a>00242
-<a name="l00243"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">00243</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> =
-<a name="l00244"></a>00244 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">"__kernel void lower_trans_solve(\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">"{ \n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" { \n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">" }\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">"}\n"</span>
-<a name="l00272"></a>00272 ; <span class="comment">//matrix_solve_row_row_align1_lower_trans_solve</span>
-<a name="l00273"></a>00273
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">00274</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> =
-<a name="l00275"></a>00275 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">"__kernel void upper_solve(\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00281"></a>00281 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00282"></a>00282 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00283"></a>00283 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00284"></a>00284 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">"{ \n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">" { \n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">" }\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">"}\n"</span>
-<a name="l00303"></a>00303 ; <span class="comment">//matrix_solve_row_row_align1_upper_solve</span>
-<a name="l00304"></a>00304
-<a name="l00305"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">00305</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> =
-<a name="l00306"></a>00306 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">"// inplace solve A^T \\ B^T\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">"__kernel void trans_lower_trans_solve(\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">"{ \n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" { \n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">" }\n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">"}\n"</span>
-<a name="l00334"></a>00334 ; <span class="comment">//matrix_solve_row_row_align1_trans_lower_trans_solve</span>
-<a name="l00335"></a>00335
-<a name="l00336"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">00336</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> =
-<a name="l00337"></a>00337 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00338"></a>00338 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00339"></a>00339 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00340"></a>00340 <span class="stringliteral">"__kernel void lower_solve(\n"</span>
-<a name="l00341"></a>00341 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00351"></a>00351 <span class="stringliteral">"{ \n"</span>
-<a name="l00352"></a>00352 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00353"></a>00353 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00354"></a>00354 <span class="stringliteral">" { \n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">" }\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">"}\n"</span>
-<a name="l00365"></a>00365 ; <span class="comment">//matrix_solve_row_row_align1_lower_solve</span>
-<a name="l00366"></a>00366
-<a name="l00367"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">00367</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> =
-<a name="l00368"></a>00368 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00370"></a>00370 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00371"></a>00371 <span class="stringliteral">"__kernel void trans_lower_solve(\n"</span>
-<a name="l00372"></a>00372 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00373"></a>00373 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">"{ \n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00385"></a>00385 <span class="stringliteral">" { \n"</span>
-<a name="l00386"></a>00386 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00387"></a>00387 <span class="stringliteral">" if (get_local_id(0) == 0) \n"</span>
-<a name="l00388"></a>00388 <span class="stringliteral">" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">" }\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">"}\n"</span>
-<a name="l00396"></a>00396 ; <span class="comment">//matrix_solve_row_row_align1_trans_lower_solve</span>
-<a name="l00397"></a>00397
-<a name="l00398"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">00398</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> =
-<a name="l00399"></a>00399 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"// inplace solve A \\ B^T\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">"__kernel void unit_upper_trans_solve(\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">"{ \n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">" { \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">" temp = B[row + get_group_id(0) * B_internal_cols]; \n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">" }\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">"}\n"</span>
-<a name="l00424"></a>00424 ; <span class="comment">//matrix_solve_row_row_align1_unit_upper_trans_solve</span>
-<a name="l00425"></a>00425
-<a name="l00426"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">00426</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> =
-<a name="l00427"></a>00427 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">"// inplace solve A \\ B\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">"__kernel void unit_upper_solve(\n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00435"></a>00435 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00436"></a>00436 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00437"></a>00437 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00438"></a>00438 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">"{ \n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">" for (int row = A_rows-1; row > -1; --row) \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">" { \n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00447"></a>00447 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00448"></a>00448 <span class="stringliteral">" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"</span>
-<a name="l00449"></a>00449 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"</span>
-<a name="l00450"></a>00450 <span class="stringliteral">" }\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">"}\n"</span>
-<a name="l00452"></a>00452 ; <span class="comment">//matrix_solve_row_row_align1_unit_upper_solve</span>
-<a name="l00453"></a>00453
-<a name="l00454"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">00454</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> =
-<a name="l00455"></a>00455 <span class="stringliteral">"// file automatically generated - do not edit!\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">"// inplace solve A^T \\ B\n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"// matrix layouts: A...row_major, B...row_major\n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">"__kernel void trans_unit_lower_solve(\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">" __global const float * A,\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">" unsigned int A_rows,\n"</span>
-<a name="l00461"></a>00461 <span class="stringliteral">" unsigned int A_cols,\n"</span>
-<a name="l00462"></a>00462 <span class="stringliteral">" unsigned int A_internal_rows,\n"</span>
-<a name="l00463"></a>00463 <span class="stringliteral">" unsigned int A_internal_cols,\n"</span>
-<a name="l00464"></a>00464 <span class="stringliteral">" __global float * B, \n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">" unsigned int B_rows,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">" unsigned int B_cols,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">" unsigned int B_internal_rows,\n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">" unsigned int B_internal_cols)\n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">"{ \n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">" float temp; \n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">" for (int row = 0; row < A_rows; ++row) \n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">" { \n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE); \n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">" temp = B[row * B_internal_cols + get_group_id(0)]; \n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">" //eliminate column of op(A) with index 'row' in parallel: \n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">" }\n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//matrix_solve_row_row_align1_trans_unit_lower_solve</span>
-<a name="l00481"></a>00481
-<a name="l00482"></a>00482 } <span class="comment">//namespace kernels</span>
-<a name="l00483"></a>00483 } <span class="comment">//namespace linalg</span>
-<a name="l00484"></a>00484 } <span class="comment">//namespace viennacl</span>
-<a name="l00485"></a>00485 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers.html b/doc/doxygen/html/namespacemembers.html
deleted file mode 100644
index cab7d84..0000000
--- a/doc/doxygen/html/namespacemembers.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">viennacl::linalg</a>
-</li>
-<li>alignment
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x63.html b/doc/doxygen/html/namespacemembers_0x63.html
deleted file mode 100644
index 8137624..0000000
--- a/doc/doxygen/html/namespacemembers_0x63.html
+++ /dev/null
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li class="current"><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>clear()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits</a>
-</li>
-<li>compmat
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">viennacl::io::val</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_jacobi_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_backward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_forward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align4_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align8_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">viennacl::linalg::kernels</a>
-</li>
-<li>compun
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">viennacl::io::tag</a>
-</li>
-<li>coordinate_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">viennacl::linalg::kernels</a>
-</li>
-<li>copy()
-: <a class="el" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">viennacl</a>
-</li>
-<li>current_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">viennacl::ocl</a>
-</li>
-<li>current_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">viennacl::ocl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x64.html b/doc/doxygen/html/namespacemembers_0x64.html
deleted file mode 100644
index 75ab0ec..0000000
--- a/doc/doxygen/html/namespacemembers_0x64.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li class="current"><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dbl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">viennacl::io::val</a>
-</li>
-<li>device
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">viennacl::io::tag</a>
-</li>
-<li>devices
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">viennacl::io::tag</a>
-</li>
-<li>divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">viennacl::linalg</a>
-</li>
-<li>driver
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x65.html b/doc/doxygen/html/namespacemembers_0x65.html
deleted file mode 100644
index 30c9c68..0000000
--- a/doc/doxygen/html/namespacemembers_0x65.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li class="current"><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>enqueue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">viennacl::ocl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x66.html b/doc/doxygen/html/namespacemembers_0x66.html
deleted file mode 100644
index 75172f2..0000000
--- a/doc/doxygen/html/namespacemembers_0x66.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li class="current"><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_copy()
-: <a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">viennacl</a>
-</li>
-<li>fast_swap()
-: <a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">viennacl</a>
-</li>
-<li>fl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x67.html b/doc/doxygen/html/namespacemembers_0x67.html
deleted file mode 100644
index e98f94c..0000000
--- a/doc/doxygen/html/namespacemembers_0x67.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li class="current"><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get_kernel()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">viennacl::ocl</a>
-</li>
-<li>get_queue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">viennacl::ocl</a>
-</li>
-<li>globsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x69.html b/doc/doxygen/html/namespacemembers_0x69.html
deleted file mode 100644
index b0a1a40..0000000
--- a/doc/doxygen/html/namespacemembers_0x69.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li class="current"><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>ilu_inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">viennacl::linalg</a>
-</li>
-<li>ilu_lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">viennacl::linalg</a>
-</li>
-<li>ilut_inc_row_iterator_to_row_index()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">viennacl::linalg</a>
-</li>
-<li>index_norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">viennacl::linalg</a>
-</li>
-<li>inner_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg</a>
-</li>
-<li>inner_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">viennacl::linalg</a>
-</li>
-<li>inplace_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">viennacl::linalg</a>
-</li>
-<li>inplace_div_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">viennacl::linalg</a>
-</li>
-<li>inplace_div_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">viennacl::linalg</a>
-</li>
-<li>inplace_divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">viennacl::linalg</a>
-</li>
-<li>inplace_mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">viennacl::linalg</a>
-</li>
-<li>inplace_mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">viennacl::linalg</a>
-</li>
-<li>inplace_mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">viennacl::linalg</a>
-</li>
-<li>inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">viennacl::linalg</a>
-</li>
-<li>inplace_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6b.html b/doc/doxygen/html/namespacemembers_0x6b.html
deleted file mode 100644
index d0e2bd5..0000000
--- a/doc/doxygen/html/namespacemembers_0x6b.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li class="current"><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">viennacl::io::tag</a>
-</li>
-<li>kernels
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6c.html b/doc/doxygen/html/namespacemembers_0x6c.html
deleted file mode 100644
index 1fa44dc..0000000
--- a/doc/doxygen/html/namespacemembers_0x6c.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li class="current"><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>locsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">viennacl::io::val</a>
-</li>
-<li>lu_factorize()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">viennacl::linalg</a>
-</li>
-<li>lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6d.html b/doc/doxygen/html/namespacemembers_0x6d.html
deleted file mode 100644
index c25735e..0000000
--- a/doc/doxygen/html/namespacemembers_0x6d.html
+++ /dev/null
@@ -1,496 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li class="current"><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>make_double_kernel()
-: <a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">viennacl::tools</a>
-</li>
-<li>matrix
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">viennacl::io::val</a>
-</li>
-<li>matrix_col_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">viennacl::linalg::kernels</a>
-</li>
-<li>mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">viennacl::linalg</a>
-</li>
-<li>mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">viennacl::linalg</a>
-</li>
-<li>mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6e.html b/doc/doxygen/html/namespacemembers_0x6e.html
deleted file mode 100644
index 8f476ea..0000000
--- a/doc/doxygen/html/namespacemembers_0x6e.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li class="current"><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">viennacl::io::tag</a>
-</li>
-<li>norm_1()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">viennacl::linalg</a>
-</li>
-<li>norm_1_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">viennacl::linalg</a>
-</li>
-<li>norm_2()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg</a>
-</li>
-<li>norm_2_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">viennacl::linalg</a>
-</li>
-<li>norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">viennacl::linalg</a>
-</li>
-<li>norm_inf_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">viennacl::linalg</a>
-</li>
-<li>numeric
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x6f.html b/doc/doxygen/html/namespacemembers_0x6f.html
deleted file mode 100644
index 9f0c5e7..0000000
--- a/doc/doxygen/html/namespacemembers_0x6f.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li class="current"><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator*()
-: <a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">viennacl</a>
-</li>
-<li>operator+()
-: <a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">viennacl</a>
-</li>
-<li>operator-()
-: <a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">viennacl</a>
-</li>
-<li>operator/()
-: <a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">viennacl</a>
-</li>
-<li>operator<<()
-: <a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">viennacl</a>
-</li>
-<li>operator>>()
-: <a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">viennacl</a>
-</li>
-<li>outer_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x70.html b/doc/doxygen/html/namespacemembers_0x70.html
deleted file mode 100644
index b2ac6a6..0000000
--- a/doc/doxygen/html/namespacemembers_0x70.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li class="current"><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>param
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">viennacl::io::tag</a>
-</li>
-<li>params
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">viennacl::io::tag</a>
-</li>
-<li>plane_rotation()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">viennacl::linalg</a>
-</li>
-<li>precondition()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">viennacl::linalg</a>
-</li>
-<li>prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">viennacl::linalg</a>
-</li>
-<li>prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">viennacl::linalg</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x72.html b/doc/doxygen/html/namespacemembers_0x72.html
deleted file mode 100644
index 39ef63e..0000000
--- a/doc/doxygen/html/namespacemembers_0x72.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li class="current"><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">viennacl::linalg</a>
-</li>
-<li>read_kernel_parameters()
-: <a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">viennacl::io</a>
-</li>
-<li>read_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">viennacl::io</a>
-</li>
-<li>read_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">viennacl::io</a>
-</li>
-<li>readTextFromFile()
-: <a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">viennacl::tools</a>
-</li>
-<li>resize()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">viennacl::tools::traits</a>
-</li>
-<li>root
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">viennacl::io::tag</a>
-</li>
-<li>roundUpToNextMultiple()
-: <a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">viennacl::tools</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x73.html b/doc/doxygen/html/namespacemembers_0x73.html
deleted file mode 100644
index 5b48bf7..0000000
--- a/doc/doxygen/html/namespacemembers_0x73.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li class="current"><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">viennacl::linalg::kernels</a>
-</li>
-<li>scaled_rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">viennacl::linalg</a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">viennacl::ocl</a>
-</li>
-<li>set_kernel_params()
-: <a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">viennacl::io</a>
-</li>
-<li>setup_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">viennacl::ocl</a>
-</li>
-<li>size()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits</a>
-</li>
-<li>solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">viennacl::linalg</a>
-</li>
-<li>strReplace()
-: <a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">viennacl::tools</a>
-</li>
-<li>sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">viennacl::linalg</a>
-</li>
-<li>swap()
-: <a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">viennacl</a>
-</li>
-<li>switch_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">viennacl::ocl</a>
-</li>
-<li>switch_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">viennacl::ocl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x74.html b/doc/doxygen/html/namespacemembers_0x74.html
deleted file mode 100644
index 3e90427..0000000
--- a/doc/doxygen/html/namespacemembers_0x74.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li class="current"><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>test
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">viennacl::io::tag</a>
-</li>
-<li>tests
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">viennacl::io::tag</a>
-</li>
-<li>trans()
-: <a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">viennacl</a>
-</li>
-<li>trans_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">viennacl::linalg</a>
-</li>
-<li>tune_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">viennacl::io</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x76.html b/doc/doxygen/html/namespacemembers_0x76.html
deleted file mode 100644
index 5b01f0c..0000000
--- a/doc/doxygen/html/namespacemembers_0x76.html
+++ /dev/null
@@ -1,220 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li class="current"><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">viennacl::io::tag</a>
-</li>
-<li>vcl_ptrdiff_t
-: <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">viennacl</a>
-</li>
-<li>vcl_size_t
-: <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">viennacl</a>
-</li>
-<li>vec
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">viennacl::io::val</a>
-</li>
-<li>vector_align16_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_diag_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_index_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inner_prod
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_plane_rotation
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sqrt_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_swap
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_vmax
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_0x77.html b/doc/doxygen/html/namespacemembers_0x77.html
deleted file mode 100644
index db88190..0000000
--- a/doc/doxygen/html/namespacemembers_0x77.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_0x65.html#index_e"><span>e</span></a></li>
- <li><a href="namespacemembers_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_0x69.html#index_i"><span>i</span></a></li>
- <li><a href="namespacemembers_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_0x6f.html#index_o"><span>o</span></a></li>
- <li><a href="namespacemembers_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_0x76.html#index_v"><span>v</span></a></li>
- <li class="current"><a href="namespacemembers_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-Here is a list of all namespace members with links to the namespace documentation for each member:
-
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>workgrp
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">viennacl::io::tag</a>
-</li>
-<li>write_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">viennacl::io</a>
-</li>
-<li>write_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">viennacl::io</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_func.html b/doc/doxygen/html/namespacemembers_func.html
deleted file mode 100644
index 5a0ef7d..0000000
--- a/doc/doxygen/html/namespacemembers_func.html
+++ /dev/null
@@ -1,341 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="#index_a"><span>a</span></a></li>
- <li><a href="#index_c"><span>c</span></a></li>
- <li><a href="#index_d"><span>d</span></a></li>
- <li><a href="#index_e"><span>e</span></a></li>
- <li><a href="#index_f"><span>f</span></a></li>
- <li><a href="#index_g"><span>g</span></a></li>
- <li><a href="#index_i"><span>i</span></a></li>
- <li><a href="#index_l"><span>l</span></a></li>
- <li><a href="#index_m"><span>m</span></a></li>
- <li><a href="#index_n"><span>n</span></a></li>
- <li><a href="#index_o"><span>o</span></a></li>
- <li><a href="#index_p"><span>p</span></a></li>
- <li><a href="#index_r"><span>r</span></a></li>
- <li><a href="#index_s"><span>s</span></a></li>
- <li><a href="#index_t"><span>t</span></a></li>
- <li><a href="#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>clear()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">viennacl::tools::traits</a>
-</li>
-<li>copy()
-: <a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">viennacl</a>
-</li>
-<li>current_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">viennacl::ocl</a>
-</li>
-<li>current_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
-<li>enqueue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fast_copy()
-: <a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">viennacl</a>
-</li>
-<li>fast_swap()
-: <a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">viennacl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>get_kernel()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">viennacl::ocl</a>
-</li>
-<li>get_queue()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
-<li>ilu_inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">viennacl::linalg</a>
-</li>
-<li>ilu_lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">viennacl::linalg</a>
-</li>
-<li>ilut_inc_row_iterator_to_row_index()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">viennacl::linalg</a>
-</li>
-<li>index_norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">viennacl::linalg</a>
-</li>
-<li>inner_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">viennacl::linalg</a>
-</li>
-<li>inner_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">viennacl::linalg</a>
-</li>
-<li>inplace_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">viennacl::linalg</a>
-</li>
-<li>inplace_div_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">viennacl::linalg</a>
-</li>
-<li>inplace_div_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">viennacl::linalg</a>
-</li>
-<li>inplace_divide()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">viennacl::linalg</a>
-</li>
-<li>inplace_mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">viennacl::linalg</a>
-</li>
-<li>inplace_mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">viennacl::linalg</a>
-</li>
-<li>inplace_mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">viennacl::linalg</a>
-</li>
-<li>inplace_solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">viennacl::linalg</a>
-</li>
-<li>inplace_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>lu_factorize()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">viennacl::linalg</a>
-</li>
-<li>lu_substitute()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>make_double_kernel()
-: <a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">viennacl::tools</a>
-</li>
-<li>mul_add()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">viennacl::linalg</a>
-</li>
-<li>mul_sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">viennacl::linalg</a>
-</li>
-<li>mult()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>norm_1()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">viennacl::linalg</a>
-</li>
-<li>norm_1_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">viennacl::linalg</a>
-</li>
-<li>norm_2()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">viennacl::linalg</a>
-</li>
-<li>norm_2_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">viennacl::linalg</a>
-</li>
-<li>norm_inf()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">viennacl::linalg</a>
-</li>
-<li>norm_inf_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
-<li>operator*()
-: <a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">viennacl</a>
-</li>
-<li>operator+()
-: <a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">viennacl</a>
-</li>
-<li>operator-()
-: <a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">viennacl</a>
-</li>
-<li>operator/()
-: <a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">viennacl</a>
-</li>
-<li>operator<<()
-: <a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">viennacl</a>
-</li>
-<li>operator>>()
-: <a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">viennacl</a>
-</li>
-<li>outer_prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>plane_rotation()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">viennacl::linalg</a>
-</li>
-<li>precondition()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">viennacl::linalg</a>
-</li>
-<li>prod()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">viennacl::linalg</a>
-</li>
-<li>prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">viennacl::linalg</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">viennacl::linalg</a>
-</li>
-<li>read_kernel_parameters()
-: <a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">viennacl::io</a>
-</li>
-<li>read_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">viennacl::io</a>
-</li>
-<li>read_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">viennacl::io</a>
-</li>
-<li>readTextFromFile()
-: <a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">viennacl::tools</a>
-</li>
-<li>resize()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">viennacl::tools::traits</a>
-</li>
-<li>roundUpToNextMultiple()
-: <a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">viennacl::tools</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scaled_rank_1_update()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">viennacl::linalg</a>
-</li>
-<li>set_context_device_type()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">viennacl::ocl</a>
-</li>
-<li>set_kernel_params()
-: <a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">viennacl::io</a>
-</li>
-<li>setup_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">viennacl::ocl</a>
-</li>
-<li>size()
-: <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">viennacl::tools::traits</a>
-</li>
-<li>solve()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">viennacl::linalg</a>
-</li>
-<li>strReplace()
-: <a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">viennacl::tools</a>
-</li>
-<li>sub()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">viennacl::linalg</a>
-</li>
-<li>swap()
-: <a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">viennacl</a>
-</li>
-<li>switch_context()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">viennacl::ocl</a>
-</li>
-<li>switch_device()
-: <a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">viennacl::ocl</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>trans()
-: <a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">viennacl</a>
-</li>
-<li>trans_prod_impl()
-: <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">viennacl::linalg</a>
-</li>
-<li>tune_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">viennacl::io</a>
-</li>
-</ul>
-
-
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>write_matrix_market_file()
-: <a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">viennacl::io</a>
-</li>
-<li>write_matrix_market_file_impl()
-: <a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">viennacl::io</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_type.html b/doc/doxygen/html/namespacemembers_type.html
deleted file mode 100644
index 14a53df..0000000
--- a/doc/doxygen/html/namespacemembers_type.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li class="current"><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
- <ul>
-<li>vcl_ptrdiff_t
-: <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">viennacl</a>
-</li>
-<li>vcl_size_t
-: <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">viennacl</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars.html b/doc/doxygen/html/namespacemembers_vars.html
deleted file mode 100644
index f1b8336..0000000
--- a/doc/doxygen/html/namespacemembers_vars.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li class="current"><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
-<li>alignment
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x63.html b/doc/doxygen/html/namespacemembers_vars_0x63.html
deleted file mode 100644
index ebe0dbb..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x63.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
-<li>compmat
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">viennacl::io::val</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_bicgstab_kernel2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_jacobi_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_backward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_lu_forward
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_row_scaling_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align4_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">viennacl::linalg::kernels</a>
-</li>
-<li>compressed_matrix_align8_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">viennacl::linalg::kernels</a>
-</li>
-<li>compun
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">viennacl::io::tag</a>
-</li>
-<li>coordinate_matrix_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x64.html b/doc/doxygen/html/namespacemembers_vars_0x64.html
deleted file mode 100644
index e309057..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x64.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
-<li>dbl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">viennacl::io::val</a>
-</li>
-<li>device
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">viennacl::io::tag</a>
-</li>
-<li>devices
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">viennacl::io::tag</a>
-</li>
-<li>driver
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x66.html b/doc/doxygen/html/namespacemembers_vars_0x66.html
deleted file mode 100644
index 1f1244d..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x66.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
-<li>fl
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x67.html b/doc/doxygen/html/namespacemembers_vars_0x67.html
deleted file mode 100644
index 351f476..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x67.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
-<li>globsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6b.html b/doc/doxygen/html/namespacemembers_vars_0x6b.html
deleted file mode 100644
index 5ac5612..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6b.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
-<li>kernel
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">viennacl::io::tag</a>
-</li>
-<li>kernels
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6c.html b/doc/doxygen/html/namespacemembers_vars_0x6c.html
deleted file mode 100644
index ba67f65..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6c.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
-<li>locsize
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">viennacl::io::val</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6d.html b/doc/doxygen/html/namespacemembers_vars_0x6d.html
deleted file mode 100644
index c7df0de..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6d.html
+++ /dev/null
@@ -1,481 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
-<li>matrix
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">viennacl::io::val</a>
-</li>
-<li>matrix_col_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_col_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_col_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_col_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_col_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_AT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TA
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_prod_row_row_row_align1_prod_TT
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_lu_factorize
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_scaled_rank1_update
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_trans_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_lower_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_unit_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_upper_triangular_substitute_inplace
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_row_align1_vec_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_col_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_col_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_trans_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_lower_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_unit_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">viennacl::linalg::kernels</a>
-</li>
-<li>matrix_solve_row_row_align1_upper_trans_solve
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x6e.html b/doc/doxygen/html/namespacemembers_vars_0x6e.html
deleted file mode 100644
index 347cfa4..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x6e.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
-<li>name
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">viennacl::io::tag</a>
-</li>
-<li>numeric
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x70.html b/doc/doxygen/html/namespacemembers_vars_0x70.html
deleted file mode 100644
index 63687de..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x70.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
-<li>param
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">viennacl::io::tag</a>
-</li>
-<li>params
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x72.html b/doc/doxygen/html/namespacemembers_vars_0x72.html
deleted file mode 100644
index 4f9b4f1..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x72.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
-<li>root
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x73.html b/doc/doxygen/html/namespacemembers_vars_0x73.html
deleted file mode 100644
index 9fa0904..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x73.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
-<li>scalar_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_cpu_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_div
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">viennacl::linalg::kernels</a>
-</li>
-<li>scalar_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x74.html b/doc/doxygen/html/namespacemembers_vars_0x74.html
deleted file mode 100644
index 063a246..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x74.html
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
-<li>test
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">viennacl::io::tag</a>
-</li>
-<li>tests
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x76.html b/doc/doxygen/html/namespacemembers_vars_0x76.html
deleted file mode 100644
index 5e1a13b..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x76.html
+++ /dev/null
@@ -1,211 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
-<li>value
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">viennacl::io::tag</a>
-</li>
-<li>vec
-: <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">viennacl::io::val</a>
-</li>
-<li>vector_align16_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_inplace_mul
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align16_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_clear
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_cpu_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_diag_precond
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_index_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inner_prod
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_divide
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_inplace_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_mult
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_1
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_2
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_norm_inf
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_plane_rotation
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sqrt_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_sum
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_swap
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align1_vmax
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_cpu_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_div_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_inplace_mul_sub
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">viennacl::linalg::kernels</a>
-</li>
-<li>vector_align4_mul_add
-: <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">viennacl::linalg::kernels</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespacemembers_vars_0x77.html b/doc/doxygen/html/namespacemembers_vars_0x77.html
deleted file mode 100644
index b197966..0000000
--- a/doc/doxygen/html/namespacemembers_vars_0x77.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Data Fields</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespacemembers.html"><span>All</span></a></li>
- <li><a href="namespacemembers_func.html"><span>Functions</span></a></li>
- <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li>
- <li><a href="namespacemembers_type.html"><span>Typedefs</span></a></li>
- </ul>
- </div>
- <div class="tabs3">
- <ul class="tablist">
- <li><a href="namespacemembers_vars.html#index_a"><span>a</span></a></li>
- <li><a href="namespacemembers_vars_0x63.html#index_c"><span>c</span></a></li>
- <li><a href="namespacemembers_vars_0x64.html#index_d"><span>d</span></a></li>
- <li><a href="namespacemembers_vars_0x66.html#index_f"><span>f</span></a></li>
- <li><a href="namespacemembers_vars_0x67.html#index_g"><span>g</span></a></li>
- <li><a href="namespacemembers_vars_0x6b.html#index_k"><span>k</span></a></li>
- <li><a href="namespacemembers_vars_0x6c.html#index_l"><span>l</span></a></li>
- <li><a href="namespacemembers_vars_0x6d.html#index_m"><span>m</span></a></li>
- <li><a href="namespacemembers_vars_0x6e.html#index_n"><span>n</span></a></li>
- <li><a href="namespacemembers_vars_0x70.html#index_p"><span>p</span></a></li>
- <li><a href="namespacemembers_vars_0x72.html#index_r"><span>r</span></a></li>
- <li><a href="namespacemembers_vars_0x73.html#index_s"><span>s</span></a></li>
- <li><a href="namespacemembers_vars_0x74.html#index_t"><span>t</span></a></li>
- <li><a href="namespacemembers_vars_0x76.html#index_v"><span>v</span></a></li>
- <li class="current"><a href="namespacemembers_vars_0x77.html#index_w"><span>w</span></a></li>
- </ul>
- </div>
-</div>
-<div class="contents">
-
-
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
-<li>workgrp
-: <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">viennacl::io::tag</a>
-</li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaces.html b/doc/doxygen/html/namespaces.html
deleted file mode 100644
index ec4914f..0000000
--- a/doc/doxygen/html/namespaces.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: Namespace Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li class="current"><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>Namespace List</h1> </div>
-</div>
-<div class="contents">
-Here is a list of all namespaces with brief descriptions:<table>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl.html">viennacl</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1io.html">viennacl::io</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">viennacl::io::tag</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1io_1_1val.html">viennacl::io::val</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">viennacl::tools::result_of</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">viennacl::tools::traits</a></td><td class="indexvalue"></td></tr>
- <tr><td class="indexkey"><a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a></td><td class="indexvalue"></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl.html b/doc/doxygen/html/namespaceviennacl.html
deleted file mode 100644
index 6415545..0000000
--- a/doc/doxygen/html/namespaceviennacl.html
+++ /dev/null
@@ -1,2021 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#typedef-members">Typedefs</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>viennacl Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html">io</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">tools</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1traits.html">traits</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix in compressed sparse rows format. <a href="classviennacl_1_1compressed__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row and column indices and val denotes the entry. <a href="classviennacl_1_1coordinate__matrix.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>. <a href="structviennacl_1_1is__mtl4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>. <a href="structviennacl_1_1is__eigen.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. <a href="structviennacl_1_1is__ublas.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl.html">is_stl</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. <a href="structviennacl_1_1is__stl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>. <a href="structviennacl_1_1is__viennacl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html">row_major</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for row-major storage of a dense matrix. <a href="structviennacl_1_1row__major.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html">column_major</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing row index of a matrix. <a href="structviennacl_1_1row__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag indicating iteration along increasing columns index of a matrix. <a href="structviennacl_1_1col__iteration.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix__iterator.html">matrix_iterator</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1matrix.html">matrix</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A dense matrix class. <a href="classviennacl_1_1matrix.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy for scalar expressions (e.g. from inner vector products). <a href="classviennacl_1_1scalar__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html">scalar</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double. <a href="classviennacl_1_1scalar.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1entry__proxy.html">entry_proxy</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-users of the library. <a href="classviennacl_1_1entry__proxy.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An expression template class that represents a binary operation that yields a vector. <a href="classviennacl_1_1vector__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!! <a href="classviennacl_1_1const__vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!! <a href="classviennacl_1_1vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html">vector</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector. <a href="classviennacl_1_1vector.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="typedef-members"></a>
-Typedefs</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef std::ptrdiff_t </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). <a href="#a5684964ce1519c88a443aa14be9428f0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a25d1118aadbe1e6cb69b70df35f94763">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. <a href="#a25d1118aadbe1e6cb69b70df35f94763"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6b202ebcc6108940a59881c42f3d86da">copy</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. <a href="#a6b202ebcc6108940a59881c42f3d86da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a8a0feeb7a31a31f45e1d014512758fe6">copy</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . <a href="#a8a0feeb7a31a31f45e1d014512758fe6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a87f711ebb1d8fd6435d31f1841f9cfaf">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). <a href="#a87f711ebb1d8fd6435d31f1841f9cfaf"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4fb2cd615454e656202d5d6f1a54483">copy</a> (const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. <a href="#ab4fb2cd615454e656202d5d6f1a54483"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab2ea05f107d5ec7f31214a2898ccbe08">copy</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. <a href="#ab2ea05f107d5ec7f31214a2898ccbe08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae1d2b8aa5bf56f7479a66d51713708d2">copy</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . <a href="#ae1d2b8aa5bf56f7479a66d51713708d2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. <a href="#afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">copy</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector. <a href="#af638a30a9dd2001143b4c92072c76d48"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">copy</a> (<a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector. <a href="#a9164bd549b986f39b035c24a426869b9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#abc6cd55d2644b2c6b5f69cb733fb6f24">operator<<</a> (std::ostream &s, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas. <a href="#abc6cd55d2644b2c6b5f69cb733fb6f24"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab7b70e43299f65259cc61849f9ad997c">operator<<</a> (std::ostream &s, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< LHS, RHS, OP > &expr)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Prints the matrix. Output is compatible to boost::numeric::ublas. <a href="#ab7b70e43299f65259cc61849f9ad997c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a95013bc545c5642ccfbd8c5ceb3b885c">trans</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an expression template class representing a transposed matrix. <a href="#a95013bc545c5642ccfbd8c5ceb3b885c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4bd43fae5bc2cdd71e384d1794527add">copy</a> (const CPU_MATRIX &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). <a href="#a4bd43fae5bc2cdd71e384d1794527add"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a376734f00b48e1c773c82eb9290c1f08">copy</a> (const std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense STL-type matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). <a href="#a376734f00b48e1c773c82eb9290c1f08"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99">fast_copy</a> (SCALARTYPE *cpu_matrix_begin, SCALARTYPE *cpu_matrix_end, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without temporary. Matrix-Layout on CPU must be equal to the matrix-layout on the GPU. <a href="#ab917c8f27a8f1cf7b8d6be54989efb99"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_MATRIX , typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0b4ced508c064fe8b45f437b538ed2ca">copy</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). <a href="#a0b4ced508c064fe8b45f437b538ed2ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename A1 , typename A2 , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a72359f3759c0067ac956d01c36651f9a">copy</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). <a href="#a72359f3759c0067ac956d01c36651f9a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a2fae23064f21ff285672845e82545fd2">fast_copy</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, SCALARTYPE *cpu_matrix_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). <a href="#a2fae23064f21ff285672845e82545fd2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod >, const SCALARTYPE, <br class="typebreak"/>
-op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator*</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > &proxy, CPU_SCALAR val)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename CPU_SCALAR , typename SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae29e41dc09ce774a0082eb52bdcb81e7">operator*</a> (CPU_SCALAR val, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 >, op_prod > const &proxy)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5b3d6b04f0d7dac6aec4342e0b37656e">operator<<</a> (std::ostream &s, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly print the value of a scalar to an output stream. <a href="#a5b3d6b04f0d7dac6aec4342e0b37656e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::istream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">operator>></a> (std::istream &s, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly read a value of a scalar from an input stream. <a href="#ab4ea659d4449111a55f748c34226f305"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a7953e64a62d2209621a3f4a505dc9f9e">copy</a> (const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_begin, const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. <a href="#a7953e64a62d2209621a3f4a505dc9f9e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6713b60b19010992ea611ef7ecd4fdf2">copy</a> (const <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_begin, const <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. <a href="#a6713b60b19010992ea611ef7ecd4fdf2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb5884675d2f3a9ca1a57a3a722aa78a">copy</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. <a href="#afb5884675d2f3a9ca1a57a3a722aa78a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9c694a91cf3e54637ed6a05ab7d9ce75">fast_copy</a> (const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_begin, const <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a GPU vector to the CPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. <a href="#a9c694a91cf3e54637ed6a05ab7d9ce75"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aad3621936e6071d2777aae22a5f891ec">fast_copy</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::fast_copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. <a href="#aad3621936e6071d2777aae22a5f891ec"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a12da6187594db18ae7aa4874e1ad3f1d">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, <a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator</a>< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0d4fd919fa235b1c7dabd0049740e774">copy</a> (const CPUVECTOR &cpu_vec, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. <a href="#a0d4fd919fa235b1c7dabd0049740e774"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9250bb8c996f6eab600899146e0cbf26">fast_copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, <a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator</a>< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a CPU vector to the GPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. <a href="#a9250bb8c996f6eab600899146e0cbf26"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af7146b5952b3532c74728adc05d4de55">fast_copy</a> (const CPUVECTOR &cpu_vec, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::fast_copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. <a href="#af7146b5952b3532c74728adc05d4de55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ad823fb30fd180da375a1e09d56c0a1b8">copy</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_vec, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT_DEST > &gpu_dest_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a ViennaCL vector to another ViennaCL vector. Convenience wrapper for viennacl::linalg::copy(gpu_src_vec.begin(), gpu_src_vec.end(), gpu_dest_vec.begin());. <a href="#ad823fb30fd180da375a1e09d56c0a1b8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5e572599ddbae8812154538849fa707c">operator<<</a> (std::ostream &s, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Output stream. Output format is ublas compatible. <a href="#a5e572599ddbae8812154538849fa707c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">swap</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the contents of two vectors, data is copied. <a href="#a0c01dfab44c6d3849f7d0eac55539142"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">fast_swap</a> (<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &v1, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, ALIGNMENT > &v2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied. <a href="#a976181b1f6aa698b64a4746f0949fce0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa60d7cda126efd13c3413453606850b7">operator*</a> (SCALARTYPE const &value, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a host scalar (float or double) and v1 is a ViennaCL vector. <a href="#aa60d7cda126efd13c3413453606850b7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3b34a609403378a81c3a2589a5418077">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &value, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a ViennaCL scalar (float or double) and v1 is a ViennaCL vector. <a href="#a3b34a609403378a81c3a2589a5418077"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">operator+</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1 > const &proxy1, <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of two vector expressions. <a href="#aae3143a0fbb9e586b489cea90acf6659"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57">operator-</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1 > const &proxy1, <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of two vector expressions. <a href="#a77d42d098f9212ba53487deb6ddacf57"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0808ef51d9a2d2e1ecbed3d4b63e159f">operator+</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. <a href="#a0808ef51d9a2d2e1ecbed3d4b63e159f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">operator-</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. <a href="#ae00e47f8124b08cbeb8b7fc9ff537081"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a00f47d8ad32713f98c6979c245b88cdb">operator*</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a scalar from the right, e.g. (beta * vec1) * alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the right. <a href="#a00f47d8ad32713f98c6979c245b88cdb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">operator/</a> (<a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then divided by alpha. <a href="#a3aeb5b431a9c6d0b3af24a1513e8e9ad"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a66a24c58d27c6368ac879f4d7cc4cfc9">operator*</a> (<a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &val, <a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a ViennaCL scalar from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. <a href="#a66a24c58d27c6368ac879f4d7cc4cfc9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4522333fedaf508711a5aa02c47e5c7a">operator*</a> (SCALARTYPE val, <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a host scalar (float or double) from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. <a href="#a4522333fedaf508711a5aa02c47e5c7a"></a><br/></td></tr>
-</table>
-<hr/><h2>Typedef Documentation</h2>
-<a class="anchor" id="aa2aeb075792a4f72abdd84b393d41869"></a><!-- doxytag: member="viennacl::vcl_ptrdiff_t" ref="aa2aeb075792a4f72abdd84b393d41869" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef std::ptrdiff_t <a class="el" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a151281d5407af580310fed77af40f052"></a><!-- doxytag: member="viennacl::vcl_size_t" ref="a151281d5407af580310fed77af40f052" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef std::size_t <a class="el" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a5684964ce1519c88a443aa14be9428f0"></a><!-- doxytag: member="viennacl::copy" ref="a5684964ce1519c88a443aa14be9428f0" args="(const CPU_MATRIX &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). </p>
-<p>There are some type requirements on the CPU_MATRIX type (fulfilled by e.g. boost::numeric::ublas):</p>
-<ul>
-<li>.size1() returns the number of rows</li>
-<li>.size2() returns the number of columns</li>
-<li>const_iterator1 is a type definition for an iterator along increasing row indices</li>
-<li>const_iterator2 is a type definition for an iterator along increasing columns indices</li>
-<li>The const_iterator1 type provides an iterator of type const_iterator2 via members .begin() and .end() that iterates along column indices in the current row.</li>
-<li>The types const_iterator1 and const_iterator2 provide members functions .index1() and .index2() that return the current row and column indices respectively.</li>
-<li>Dereferenciation of an object of type const_iterator2 returns the entry.</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a25d1118aadbe1e6cb69b70df35f94763"></a><!-- doxytag: member="viennacl::copy" ref="a25d1118aadbe1e6cb69b70df35f94763" args="(const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8a0feeb7a31a31f45e1d014512758fe6"></a><!-- doxytag: member="viennacl::copy" ref="a8a0feeb7a31a31f45e1d014512758fe6" args="(const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
- <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae1d2b8aa5bf56f7479a66d51713708d2"></a><!-- doxytag: member="viennacl::copy" ref="ae1d2b8aa5bf56f7479a66d51713708d2" args="(const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
- <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from an OpenCL device to the host. The host type is the std::vector< std::map < > > format . </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> from ViennaCL </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a376734f00b48e1c773c82eb9290c1f08"></a><!-- doxytag: member="viennacl::copy" ref="a376734f00b48e1c773c82eb9290c1f08" args="(const std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const std::vector< std::vector< SCALARTYPE, A1 >, A2 > & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense STL-type matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense matrix on the host of type std::vector< std::vector<> >. cpu_matrix[i][j] returns the element in the i-th row and j-th columns (both starting with zero) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad823fb30fd180da375a1e09d56c0a1b8"></a><!-- doxytag: member="viennacl::copy" ref="ad823fb30fd180da375a1e09d56c0a1b8" args="(vector< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_vec, vector< SCALARTYPE, ALIGNMENT_DEST > &gpu_dest_vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT_SRC > const & </td>
- <td class="paramname"> <em>gpu_src_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT_DEST > & </td>
- <td class="paramname"> <em>gpu_dest_vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a ViennaCL vector to another ViennaCL vector. Convenience wrapper for viennacl::linalg::copy(gpu_src_vec.begin(), gpu_src_vec.end(), gpu_dest_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_src_vec</em> </td><td>A gpu vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_dest_vec</em> </td><td>The cpu vector. Type requirements: Output iterator can be obtained via member function .begin() </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><!-- doxytag: member="viennacl::copy" ref="afb1db189fa5cd8ee4a8222d8b87f3ab0" args="(CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void copy </td>
- <td>(</td>
- <td class="paramtype">CPU_ITERATOR const & </td>
- <td class="paramname"> <em>cpu_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_ITERATOR const & </td>
- <td class="paramname"> <em>cpu_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector_iterator< SCALARTYPE, ALIGNMENT > </td>
- <td class="paramname"> <em>gpu_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>CPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_end</em> </td><td>CPU iterator pointing to the end of the vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>Output iterator for the gpu vector. The gpu vector must be at least as long as the cpu vector! </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0b4ced508c064fe8b45f437b538ed2ca"></a><!-- doxytag: member="viennacl::copy" ref="a0b4ced508c064fe8b45f437b538ed2ca" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense memory on the host. Must have at least as many rows and columns as the gpu_matrix! Type requirement: Access to entries via operator() </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a72359f3759c0067ac956d01c36651f9a"></a><!-- doxytag: member="viennacl::copy" ref="a72359f3759c0067ac956d01c36651f9a" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, std::vector< std::vector< SCALARTYPE, A1 >, A2 > &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< std::vector< SCALARTYPE, A1 >, A2 > & </td>
- <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense memory on the host using STL types, typically std::vector< std::vector<> > Must have at least as many rows and columns as the gpu_matrix! Type requirement: Access to entries via operator() </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87f711ebb1d8fd6435d31f1841f9cfaf"></a><!-- doxytag: member="viennacl::copy" ref="a87f711ebb1d8fd6435d31f1841f9cfaf" args="(const CPU_MATRIX &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU). </p>
-<p>For the requirements on the CPU_MATRIX type, see the documentation of the function copy(CPU_MATRIX, compressed_matrix<>)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af638a30a9dd2001143b4c92072c76d48"></a><!-- doxytag: member="viennacl::copy" ref="af638a30a9dd2001143b4c92072c76d48" args="(const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void copy </td>
- <td>(</td>
- <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
- <td class="paramname"> <em>gpu_src_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
- <td class="paramname"> <em>gpu_src_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector_iterator< SCALARTYPE, ALIGNMENT_DEST > </td>
- <td class="paramname"> <em>gpu_dest_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copy (parts of a) GPU vector to another GPU vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_src_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_src_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_dest_begin</em> </td><td>Output iterator for the gpu vector. The gpu_dest vector must be at least as long as the gpu_src vector! </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9164bd549b986f39b035c24a426869b9"></a><!-- doxytag: member="viennacl::copy" ref="a9164bd549b986f39b035c24a426869b9" args="(const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void copy </td>
- <td>(</td>
- <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
- <td class="paramname"> <em>gpu_src_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const & </td>
- <td class="paramname"> <em>gpu_src_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > </td>
- <td class="paramname"> <em>gpu_dest_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copy (parts of a) GPU vector to another GPU vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_src_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_src_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_dest_begin</em> </td><td>Output iterator for the gpu vector. The gpu vector must be at least as long as the cpu vector! </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6b202ebcc6108940a59881c42f3d86da"></a><!-- doxytag: member="viennacl::copy" ref="a6b202ebcc6108940a59881c42f3d86da" args="(const compressed_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. </p>
-<p>There are two type requirements on the CPU_MATRIX type (fulfilled by e.g. boost::numeric::ublas):</p>
-<ul>
-<li>resize(rows, cols) A resize function to bring the matrix into the correct size</li>
-<li>operator(i,j) Write new entries via the parenthesis operator</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> from ViennaCL </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab4fb2cd615454e656202d5d6f1a54483"></a><!-- doxytag: member="viennacl::copy" ref="ab4fb2cd615454e656202d5d6f1a54483" args="(const std::vector< std::map< unsigned int, SCALARTYPE > > &cpu_matrix, coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const std::vector< std::map< unsigned int, SCALARTYPE > > & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix in the std::vector< std::map < > > format to an OpenCL device. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> from ViennaCL </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7953e64a62d2209621a3f4a505dc9f9e"></a><!-- doxytag: member="viennacl::copy" ref="a7953e64a62d2209621a3f4a505dc9f9e" args="(const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_ITERATOR </td>
- <td class="paramname"> <em>cpu_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>GPU constant iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_end</em> </td><td>GPU constant iterator pointing to the end of the vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>Output iterator for the cpu vector. The cpu vector must be at least as long as the gpu vector! </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6713b60b19010992ea611ef7ecd4fdf2"></a><!-- doxytag: member="viennacl::copy" ref="a6713b60b19010992ea611ef7ecd4fdf2" args="(const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_ITERATOR </td>
- <td class="paramname"> <em>cpu_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>Output iterator for the cpu vector. The cpu vector must be at least as long as the gpu vector! </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afb5884675d2f3a9ca1a57a3a722aa78a"></a><!-- doxytag: member="viennacl::copy" ref="afb5884675d2f3a9ca1a57a3a722aa78a" args="(vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > const & </td>
- <td class="paramname"> <em>gpu_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPUVECTOR & </td>
- <td class="paramname"> <em>cpu_vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>A gpu vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>The cpu vector. Type requirements: Output iterator can be obtained via member function .begin() </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0d4fd919fa235b1c7dabd0049740e774"></a><!-- doxytag: member="viennacl::copy" ref="a0d4fd919fa235b1c7dabd0049740e774" args="(const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const CPUVECTOR & </td>
- <td class="paramname"> <em>cpu_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>A cpu vector. Type requirements: Iterator can be obtained via member function .begin() and .end() </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>The gpu vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab2ea05f107d5ec7f31214a2898ccbe08"></a><!-- doxytag: member="viennacl::copy" ref="ab2ea05f107d5ec7f31214a2898ccbe08" args="(const coordinate_matrix< SCALARTYPE, ALIGNMENT > &gpu_matrix, CPU_MATRIX &cpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a sparse matrix from the OpenCL device (either GPU or multi-core CPU) to the host. </p>
-<p>There are two type requirements on the CPU_MATRIX type (fulfilled by e.g. boost::numeric::ublas):</p>
-<ul>
-<li>resize(rows, cols) A resize function to bring the matrix into the correct size</li>
-<li>operator(i,j) Write new entries via the parenthesis operator</li>
-</ul>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a> from ViennaCL </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A sparse matrix on the host. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4bd43fae5bc2cdd71e384d1794527add"></a><!-- doxytag: member="viennacl::copy" ref="a4bd43fae5bc2cdd71e384d1794527add" args="(const CPU_MATRIX &cpu_matrix, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">const CPU_MATRIX & </td>
- <td class="paramname"> <em>cpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix</em> </td><td>A dense matrix on the host. Type requirements: .size1() returns number of rows, .size2() returns number of columns. Access to entries via operator() </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a12da6187594db18ae7aa4874e1ad3f1d"></a><!-- doxytag: member="viennacl::copy" ref="a12da6187594db18ae7aa4874e1ad3f1d" args="(CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, const_vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::copy </td>
- <td>(</td>
- <td class="paramtype">CPU_ITERATOR const & </td>
- <td class="paramname"> <em>cpu_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_ITERATOR const & </td>
- <td class="paramname"> <em>cpu_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const_vector_iterator< SCALARTYPE, ALIGNMENT > </td>
- <td class="paramname"> <em>gpu_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9250bb8c996f6eab600899146e0cbf26"></a><!-- doxytag: member="viennacl::fast_copy" ref="a9250bb8c996f6eab600899146e0cbf26" args="(CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::fast_copy </td>
- <td>(</td>
- <td class="paramtype">CPU_ITERATOR const & </td>
- <td class="paramname"> <em>cpu_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_ITERATOR const & </td>
- <td class="paramname"> <em>cpu_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector_iterator< SCALARTYPE, ALIGNMENT > </td>
- <td class="paramname"> <em>gpu_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer of a CPU vector to the GPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. </p>
-<p>This method is faster than the plain <a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy()</a> function, because entries are directly read from the cpu vector, starting with &(*cpu.begin()). However, keep in mind that the cpu type MUST represent a linear piece of memory, otherwise you will run into undefined behavior.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>CPU iterator pointing to the beginning of the cpu vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_end</em> </td><td>CPU iterator pointing to the end of the vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>Output iterator for the gpu vector. The gpu iterator must be incrementable (cpu_end - cpu_begin) times, otherwise the result is undefined. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af7146b5952b3532c74728adc05d4de55"></a><!-- doxytag: member="viennacl::fast_copy" ref="af7146b5952b3532c74728adc05d4de55" args="(const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::fast_copy </td>
- <td>(</td>
- <td class="paramtype">const CPUVECTOR & </td>
- <td class="paramname"> <em>cpu_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::fast_copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>A cpu vector. Type requirements: Iterator can be obtained via member function .begin() and .end() </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>The gpu vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab917c8f27a8f1cf7b8d6be54989efb99"></a><!-- doxytag: member="viennacl::fast_copy" ref="ab917c8f27a8f1cf7b8d6be54989efb99" args="(SCALARTYPE *cpu_matrix_begin, SCALARTYPE *cpu_matrix_end, matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::fast_copy </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE * </td>
- <td class="paramname"> <em>cpu_matrix_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE * </td>
- <td class="paramname"> <em>cpu_matrix_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without temporary. Matrix-Layout on CPU must be equal to the matrix-layout on the GPU. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix_begin</em> </td><td>Pointer to the first matrix entry. Cf. iterator concept in STL </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix_end</em> </td><td>Pointer past the last matrix entry. Cf. iterator concept in STL </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2fae23064f21ff285672845e82545fd2"></a><!-- doxytag: member="viennacl::fast_copy" ref="a2fae23064f21ff285672845e82545fd2" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix, SCALARTYPE *cpu_matrix_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::fast_copy </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE * </td>
- <td class="paramname"> <em>cpu_matrix_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Copies a dense matrix from the OpenCL device (GPU or multi-core CPU) to the host (CPU). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_matrix_begin</em> </td><td>Pointer to the output memory on the CPU. User must ensure that provided memory is large enough. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aad3621936e6071d2777aae22a5f891ec"></a><!-- doxytag: member="viennacl::fast_copy" ref="aad3621936e6071d2777aae22a5f891ec" args="(vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::fast_copy </td>
- <td>(</td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > const & </td>
- <td class="paramname"> <em>gpu_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPUVECTOR & </td>
- <td class="paramname"> <em>cpu_vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::fast_copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_vec</em> </td><td>A gpu vector. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_vec</em> </td><td>The cpu vector. Type requirements: Output iterator can be obtained via member function .begin() </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9c694a91cf3e54637ed6a05ab7d9ce75"></a><!-- doxytag: member="viennacl::fast_copy" ref="a9c694a91cf3e54637ed6a05ab7d9ce75" args="(const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::fast_copy </td>
- <td>(</td>
- <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_begin</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const const_vector_iterator< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_end</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_ITERATOR </td>
- <td class="paramname"> <em>cpu_begin</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>STL-like transfer of a GPU vector to the CPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. </p>
-<p>This method is faster than the plain <a class="el" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy()</a> function, because entries are directly written to the cpu vector, starting with &(*cpu.begin()) However, keep in mind that the cpu type MUST represent a linear piece of memory, otherwise you will run into undefined behavior.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>gpu_begin</em> </td><td>GPU iterator pointing to the beginning of the gpu vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_end</em> </td><td>GPU iterator pointing to the end of the vector (STL-like) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>cpu_begin</em> </td><td>Output iterator for the cpu vector. The cpu vector must be at least as long as the gpu vector! </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a976181b1f6aa698b64a4746f0949fce0"></a><!-- doxytag: member="viennacl::fast_swap" ref="a976181b1f6aa698b64a4746f0949fce0" args="(vector< SCALARTYPE, ALIGNMENT > &v1, vector< SCALARTYPE, ALIGNMENT > &v2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, ALIGNMENT>& viennacl::fast_swap </td>
- <td>(</td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>v1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>v2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>v1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>v2</em> </td><td>The second vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4522333fedaf508711a5aa02c47e5c7a"></a><!-- doxytag: member="viennacl::operator*" ref="a4522333fedaf508711a5aa02c47e5c7a" args="(SCALARTYPE val, viennacl::vector_expression< LHS, RHS, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE> viennacl::operator* </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>val</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the multiplication of a vector expression with a host scalar (float or double) from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a00f47d8ad32713f98c6979c245b88cdb"></a><!-- doxytag: member="viennacl::operator*" ref="a00f47d8ad32713f98c6979c245b88cdb" args="(vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE> viennacl::operator* </td>
- <td>(</td>
- <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the multiplication of a vector expression with a scalar from the right, e.g. (beta * vec1) * alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the right. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa60d7cda126efd13c3413453606850b7"></a><!-- doxytag: member="viennacl::operator*" ref="aa60d7cda126efd13c3413453606850b7" args="(SCALARTYPE const &value, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A>, const SCALARTYPE, op_prod> viennacl::operator* </td>
- <td>(</td>
- <td class="paramtype">SCALARTYPE const & </td>
- <td class="paramname"> <em>value</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, A > const & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the expression alpha * v1, where alpha is a host scalar (float or double) and v1 is a ViennaCL vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The host scalar (float or double) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>A ViennaCL vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a45c8d32b7d99c62cdb10899d70e7bad9"></a><!-- doxytag: member="viennacl::operator*" ref="a45c8d32b7d99c62cdb10899d70e7bad9" args="(const viennacl::matrix_expression< const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT >, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > &proxy, CPU_SCALAR val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, op_prod>, const SCALARTYPE, op_prod> viennacl::operator* </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">CPU_SCALAR </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3b34a609403378a81c3a2589a5418077"></a><!-- doxytag: member="viennacl::operator*" ref="a3b34a609403378a81c3a2589a5418077" args="(scalar< SCALARTYPE > const &value, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A>, const <a class="el" href="classviennacl_1_1scalar.html">scalar</a><SCALARTYPE>, op_prod> viennacl::operator* </td>
- <td>(</td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>value</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, A > const & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the expression alpha * v1, where alpha is a ViennaCL scalar (float or double) and v1 is a ViennaCL vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The ViennaCL scalar </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>A ViennaCL vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae29e41dc09ce774a0082eb52bdcb81e7"></a><!-- doxytag: member="viennacl::operator*" ref="ae29e41dc09ce774a0082eb52bdcb81e7" args="(CPU_SCALAR val, viennacl::matrix_expression< const viennacl::vector< SCALARTYPE, VA1 >, const viennacl::vector< SCALARTYPE, VA2 >, op_prod > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA1>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA2>, op_prod>, const SCALARTYPE, op_prod> viennacl::operator* </td>
- <td>(</td>
- <td class="paramtype">CPU_SCALAR </td>
- <td class="paramname"> <em>val</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 >, op_prod > const & </td>
- <td class="paramname"> <em>proxy</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a66a24c58d27c6368ac879f4d7cc4cfc9"></a><!-- doxytag: member="viennacl::operator*" ref="a66a24c58d27c6368ac879f4d7cc4cfc9" args="(scalar< SCALARTYPE > const &val, vector_expression< LHS, RHS, OP > const &proxy)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE> viennacl::operator* </td>
- <td>(</td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>val</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>proxy</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the multiplication of a vector expression with a ViennaCL scalar from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0808ef51d9a2d2e1ecbed3d4b63e159f"></a><!-- doxytag: member="viennacl::operator+" ref="a0808ef51d9a2d2e1ecbed3d4b63e159f" args="(vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A> viennacl::operator+ </td>
- <td>(</td>
- <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, A > const & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the addition of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>Right hand side vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aae3143a0fbb9e586b489cea90acf6659"></a><!-- doxytag: member="viennacl::operator+" ref="aae3143a0fbb9e586b489cea90acf6659" args="(vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1>::VectorType viennacl::operator+ </td>
- <td>(</td>
- <td class="paramtype">vector_expression< LHS1, RHS1, OP1 > const & </td>
- <td class="paramname"> <em>proxy1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector_expression< LHS2, RHS2, OP2 > const & </td>
- <td class="paramname"> <em>proxy2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the addition of two vector expressions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy1</em> </td><td>Left hand side vector expression </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy2</em> </td><td>Right hand side vector expression </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae00e47f8124b08cbeb8b7fc9ff537081"></a><!-- doxytag: member="viennacl::operator-" ref="ae00e47f8124b08cbeb8b7fc9ff537081" args="(vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, A> viennacl::operator- </td>
- <td>(</td>
- <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, A > const & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the subtraction of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>Right hand side vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a77d42d098f9212ba53487deb6ddacf57"></a><!-- doxytag: member="viennacl::operator-" ref="a77d42d098f9212ba53487deb6ddacf57" args="(vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< LHS1, RHS1, OP1>::VectorType viennacl::operator- </td>
- <td>(</td>
- <td class="paramtype">vector_expression< LHS1, RHS1, OP1 > const & </td>
- <td class="paramname"> <em>proxy1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector_expression< LHS2, RHS2, OP2 > const & </td>
- <td class="paramname"> <em>proxy2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the subtraction of two vector expressions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy1</em> </td><td>Left hand side vector expression </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy2</em> </td><td>Right hand side vector expression </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a3aeb5b431a9c6d0b3af24a1513e8e9ad"></a><!-- doxytag: member="viennacl::operator/" ref="a3aeb5b431a9c6d0b3af24a1513e8e9ad" args="(vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE> viennacl::operator/ </td>
- <td>(</td>
- <td class="paramtype">vector_expression< LHS, RHS, OP > const & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then divided by alpha. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>Left hand side vector expression </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>Right hand side scalar </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5e572599ddbae8812154538849fa707c"></a><!-- doxytag: member="viennacl::operator<<" ref="a5e572599ddbae8812154538849fa707c" args="(std::ostream &s, vector< SCALARTYPE, ALIGNMENT > const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::ostream& viennacl::operator<< </td>
- <td>(</td>
- <td class="paramtype">std::ostream & </td>
- <td class="paramname"> <em>s</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, ALIGNMENT > const & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Output stream. Output format is ublas compatible. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>STL output stream </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>The vector that should be printed </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab7b70e43299f65259cc61849f9ad997c"></a><!-- doxytag: member="viennacl::operator<<" ref="ab7b70e43299f65259cc61849f9ad997c" args="(std::ostream &s, const matrix_expression< LHS, RHS, OP > &expr)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::ostream& viennacl::operator<< </td>
- <td>(</td>
- <td class="paramtype">std::ostream & </td>
- <td class="paramname"> <em>s</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix_expression< LHS, RHS, OP > & </td>
- <td class="paramname"> <em>expr</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Prints the matrix. Output is compatible to boost::numeric::ublas. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>STL output stream </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abc6cd55d2644b2c6b5f69cb733fb6f24"></a><!-- doxytag: member="viennacl::operator<<" ref="abc6cd55d2644b2c6b5f69cb733fb6f24" args="(std::ostream &s, const matrix< SCALARTYPE, F, ALIGNMENT > &gpu_matrix)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::ostream& viennacl::operator<< </td>
- <td>(</td>
- <td class="paramtype">std::ostream & </td>
- <td class="paramname"> <em>s</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>gpu_matrix</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Prints the matrix. Output is compatible to boost::numeric::ublas. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>STL output stream </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>gpu_matrix</em> </td><td>A dense ViennaCL matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5b3d6b04f0d7dac6aec4342e0b37656e"></a><!-- doxytag: member="viennacl::operator<<" ref="a5b3d6b04f0d7dac6aec4342e0b37656e" args="(std::ostream &s, const scalar< SCALARTYPE > &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::ostream& viennacl::operator<< </td>
- <td>(</td>
- <td class="paramtype">std::ostream & </td>
- <td class="paramname"> <em>s</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const scalar< SCALARTYPE > & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Allows to directly print the value of a scalar to an output stream. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab4ea659d4449111a55f748c34226f305"></a><!-- doxytag: member="viennacl::operator>>" ref="ab4ea659d4449111a55f748c34226f305" args="(std::istream &s, const scalar< SCALARTYPE > &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::istream& viennacl::operator>> </td>
- <td>(</td>
- <td class="paramtype">std::istream & </td>
- <td class="paramname"> <em>s</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const scalar< SCALARTYPE > & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Allows to directly read a value of a scalar from an input stream. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0c01dfab44c6d3849f7d0eac55539142"></a><!-- doxytag: member="viennacl::swap" ref="a0c01dfab44c6d3849f7d0eac55539142" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::swap </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Swaps the contents of two vectors, data is copied. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NUM_THREADS</em> </td><td>The number of threads per work group </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a95013bc545c5642ccfbd8c5ceb3b885c"></a><!-- doxytag: member="viennacl::trans" ref="a95013bc545c5642ccfbd8c5ceb3b885c" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_trans> viennacl::trans </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns an expression template class representing a transposed matrix. </p>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1io.html b/doc/doxygen/html/namespaceviennacl_1_1io.html
deleted file mode 100644
index aa18276..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1io.html
+++ /dev/null
@@ -1,547 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::io Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>viennacl::io Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html">val</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A XML parameter database using PugiXML. Allows to add tests for different devices and the like. <a href="structviennacl_1_1io_1_1parameter__database.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta class that returns the first letter of a particular type (float or double). <a href="structviennacl_1_1io_1_1first__letter__of__type.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper meta-class that converts a type to a string. <a href="structviennacl_1_1io_1_1to__string.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a932f77ca6debf7b246b785607a6a291e">set_kernel_params</a> (std::string program_name, std::string kernel_name, unsigned int glob, unsigned int loc)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a8f1538d0d1d8b463f02416775f9b5160">tune_impl</a> (<a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a> ¶s, std::string parent)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VclBasicType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a09e577fc61b06c9d35573ca2bc9b4181">read_kernel_parameters</a> (std::string filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The interface function for reading kernel parameters. <a href="#a09e577fc61b06c9d35573ca2bc9b4181"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a220e9ad28f8fd26740c4661ca2bfabdd">read_matrix_market_file_impl</a> (MatrixType &mat, const char *file, long index_base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse or dense matrix from a file (MatrixMarket format). <a href="#a220e9ad28f8fd26740c4661ca2bfabdd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#afc8f719833b923e3e33bf29da94f9280">read_matrix_market_file</a> (MatrixType &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a sparse matrix from a file (MatrixMarket format). <a href="#afc8f719833b923e3e33bf29da94f9280"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a634d5858a6a3e828bb10d12e3c41ccb9">read_matrix_market_file</a> (MatrixType &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a9fb88f9c5737bb5e1231782f6f4d6558">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">long </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a0540c43b2f513a6c8ea30fb077a08e48">read_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#ab0320189b9a763189eb545a149ad3e80">write_matrix_market_file_impl</a> (MatrixType const &mat, const char *file, long index_base)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a26ec42dba454c66e70a0f8e1d3dafb22">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const char *file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a47025d215b1eb3d9e965f2bf772b3534">write_matrix_market_file</a> (std::vector< std::map< unsigned int, ScalarType > > const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io.html#a68425e89c32e2e221555411f08e3a271">write_matrix_market_file</a> (MatrixType const &mat, const std::string &file, long index_base=1)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Writes a sparse matrix to a file (MatrixMarket format). <a href="#a68425e89c32e2e221555411f08e3a271"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a09e577fc61b06c9d35573ca2bc9b4181"></a><!-- doxytag: member="viennacl::io::read_kernel_parameters" ref="a09e577fc61b06c9d35573ca2bc9b4181" args="(std::string filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::io::read_kernel_parameters </td>
- <td>(</td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>filename</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The interface function for reading kernel parameters. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>VclBasicType</em> </td><td>The ViennaCL type for which parameters should be read </td></tr>
- </table>
- </dd>
-</dl>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>filename</em> </td><td>Relative filename to the XML file where the parameters are located in </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afc8f719833b923e3e33bf29da94f9280"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="afc8f719833b923e3e33bf29da94f9280" args="(MatrixType &mat, const char *file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">long viennacl::io::read_matrix_market_file </td>
- <td>(</td>
- <td class="paramtype">MatrixType & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reads a sparse matrix from a file (MatrixMarket format). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix that is to be read (ublas-types and std::vector< std::map <unsigned int, ScalarType> > are supported) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>The filename </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>index_base</em> </td><td>The index base, typically 1 </td></tr>
- </table>
- </dd>
-</dl>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>MatrixType</em> </td><td>A generic matrix type. Type requirements: size1() returns number of rows, size2() returns number columns, operator() writes array entries, <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize()</a> allows resizing the matrix. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Returns nonzero if file is read correctly </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a0540c43b2f513a6c8ea30fb077a08e48"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="a0540c43b2f513a6c8ea30fb077a08e48" args="(std::vector< std::map< unsigned int, ScalarType > > &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">long viennacl::io::read_matrix_market_file </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a634d5858a6a3e828bb10d12e3c41ccb9"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="a634d5858a6a3e828bb10d12e3c41ccb9" args="(MatrixType &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">long viennacl::io::read_matrix_market_file </td>
- <td>(</td>
- <td class="paramtype">MatrixType & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9fb88f9c5737bb5e1231782f6f4d6558"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file" ref="a9fb88f9c5737bb5e1231782f6f4d6558" args="(std::vector< std::map< unsigned int, ScalarType > > &mat, const char *file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">long viennacl::io::read_matrix_market_file </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a220e9ad28f8fd26740c4661ca2bfabdd"></a><!-- doxytag: member="viennacl::io::read_matrix_market_file_impl" ref="a220e9ad28f8fd26740c4661ca2bfabdd" args="(MatrixType &mat, const char *file, long index_base)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">long viennacl::io::read_matrix_market_file_impl </td>
- <td>(</td>
- <td class="paramtype">MatrixType & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reads a sparse or dense matrix from a file (MatrixMarket format). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix that is to be read </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>Filename from which the matrix should be read </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>index_base</em> </td><td>The index base, typically 1 </td></tr>
- </table>
- </dd>
-</dl>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>MatrixType</em> </td><td>A generic matrix type. Type requirements: size1() returns number of rows, size2() returns number columns, operator() writes array entries, <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize()</a> allows resizing the matrix. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Returns nonzero if file is read correctly </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a932f77ca6debf7b246b785607a6a291e"></a><!-- doxytag: member="viennacl::io::set_kernel_params" ref="a932f77ca6debf7b246b785607a6a291e" args="(std::string program_name, std::string kernel_name, unsigned int glob, unsigned int loc)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::io::set_kernel_params </td>
- <td>(</td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>program_name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>kernel_name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>glob</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>loc</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8f1538d0d1d8b463f02416775f9b5160"></a><!-- doxytag: member="viennacl::io::tune_impl" ref="a8f1538d0d1d8b463f02416775f9b5160" args="(parameter_database ¶s, std::string parent)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::io::tune_impl </td>
- <td>(</td>
- <td class="paramtype">parameter_database & </td>
- <td class="paramname"> <em>paras</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>parent</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a47025d215b1eb3d9e965f2bf772b3534"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file" ref="a47025d215b1eb3d9e965f2bf772b3534" args="(std::vector< std::map< unsigned int, ScalarType > > const &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::io::write_matrix_market_file </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68425e89c32e2e221555411f08e3a271"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file" ref="a68425e89c32e2e221555411f08e3a271" args="(MatrixType const &mat, const std::string &file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::io::write_matrix_market_file </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Writes a sparse matrix to a file (MatrixMarket format). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix that is to be read (ublas-types and std::vector< std::map <unsigned int, ScalarType> > are supported) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>file</em> </td><td>The filename </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>index_base</em> </td><td>The index base, typically 1 </td></tr>
- </table>
- </dd>
-</dl>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>MatrixType</em> </td><td>A generic matrix type. Type requirements: size1() returns number of rows, size2() returns number columns, operator() writes array entries, <a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize()</a> allows resizing the matrix. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>Returns nonzero if file is read correctly </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a26ec42dba454c66e70a0f8e1d3dafb22"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file" ref="a26ec42dba454c66e70a0f8e1d3dafb22" args="(std::vector< std::map< unsigned int, ScalarType > > const &mat, const char *file, long index_base=1)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::io::write_matrix_market_file </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< unsigned int, ScalarType > > const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em> = <code>1</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab0320189b9a763189eb545a149ad3e80"></a><!-- doxytag: member="viennacl::io::write_matrix_market_file_impl" ref="ab0320189b9a763189eb545a149ad3e80" args="(MatrixType const &mat, const char *file, long index_base)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::io::write_matrix_market_file_impl </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const char * </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>index_base</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1io_1_1tag.html b/doc/doxygen/html/namespaceviennacl_1_1io_1_1tag.html
deleted file mode 100644
index c3fc14c..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1io_1_1tag.html
+++ /dev/null
@@ -1,275 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::io::tag Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io_1_1tag.html">tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>viennacl::io::tag Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a> = "parameters"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = "devices"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a> = "device"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a> = "name"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a> = "driver"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a> = "computeunits"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a> = "workgroupsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a> = "tests"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = "test"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a> = "numeric"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a> = "kernels"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a> = "kernel"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a> = "params"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a> = "param"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a> = "value"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = "alignment"</td></tr>
-</table>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="aef11ea0e288acc0b6bb811d451e1cf06"></a><!-- doxytag: member="viennacl::io::tag::alignment" ref="aef11ea0e288acc0b6bb811d451e1cf06" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aef11ea0e288acc0b6bb811d451e1cf06">alignment</a> = "alignment"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a27210dcfb83aef14866893875920faa3"></a><!-- doxytag: member="viennacl::io::tag::compun" ref="a27210dcfb83aef14866893875920faa3" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a27210dcfb83aef14866893875920faa3">compun</a> = "computeunits"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5d346a4e5fa3df29a43d150d99c8a02a"></a><!-- doxytag: member="viennacl::io::tag::device" ref="a5d346a4e5fa3df29a43d150d99c8a02a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5d346a4e5fa3df29a43d150d99c8a02a">device</a> = "device"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af274b669b0724dd97f9ec04775651373"></a><!-- doxytag: member="viennacl::io::tag::devices" ref="af274b669b0724dd97f9ec04775651373" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af274b669b0724dd97f9ec04775651373">devices</a> = "devices"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ada10feddb1e7bd109da11d2f991bebca"></a><!-- doxytag: member="viennacl::io::tag::driver" ref="ada10feddb1e7bd109da11d2f991bebca" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ada10feddb1e7bd109da11d2f991bebca">driver</a> = "driver"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a134eb311f34dc46e0244fa7feede956f"></a><!-- doxytag: member="viennacl::io::tag::kernel" ref="a134eb311f34dc46e0244fa7feede956f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a134eb311f34dc46e0244fa7feede956f">kernel</a> = "kernel"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a92b94ec299d56ace592f942e43471a26"></a><!-- doxytag: member="viennacl::io::tag::kernels" ref="a92b94ec299d56ace592f942e43471a26" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a> = "kernels"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9b45b3e13bd9167aab02e17e08916231"></a><!-- doxytag: member="viennacl::io::tag::name" ref="a9b45b3e13bd9167aab02e17e08916231" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a9b45b3e13bd9167aab02e17e08916231">name</a> = "name"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2518a2ebdcfc0611e13ca2c3d30abf50"></a><!-- doxytag: member="viennacl::io::tag::numeric" ref="a2518a2ebdcfc0611e13ca2c3d30abf50" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a> = "numeric"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad807e325b7c2668c21d5722c68786e11"></a><!-- doxytag: member="viennacl::io::tag::param" ref="ad807e325b7c2668c21d5722c68786e11" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#ad807e325b7c2668c21d5722c68786e11">param</a> = "param"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afce9be5b7c04ea48adf1fc8e1dd2b986"></a><!-- doxytag: member="viennacl::io::tag::params" ref="afce9be5b7c04ea48adf1fc8e1dd2b986" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#afce9be5b7c04ea48adf1fc8e1dd2b986">params</a> = "params"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a995282f5bd45c83f30f7bbee0890a601"></a><!-- doxytag: member="viennacl::io::tag::root" ref="a995282f5bd45c83f30f7bbee0890a601" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a995282f5bd45c83f30f7bbee0890a601">root</a> = "parameters"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a41e08b881d3a04ae83f67fab698f2f0c"></a><!-- doxytag: member="viennacl::io::tag::test" ref="a41e08b881d3a04ae83f67fab698f2f0c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a41e08b881d3a04ae83f67fab698f2f0c">test</a> = "test"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2ed0e13c4914b208ab08c1a3ed8645d"></a><!-- doxytag: member="viennacl::io::tag::tests" ref="af2ed0e13c4914b208ab08c1a3ed8645d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#af2ed0e13c4914b208ab08c1a3ed8645d">tests</a> = "tests"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5c33da5929c9f2f9ef8d006d2350e6ec"></a><!-- doxytag: member="viennacl::io::tag::value" ref="a5c33da5929c9f2f9ef8d006d2350e6ec" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a> = "value"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aae94cad455fc94dca1e3a8be940a1d48"></a><!-- doxytag: member="viennacl::io::tag::workgrp" ref="aae94cad455fc94dca1e3a8be940a1d48" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1tag.html#aae94cad455fc94dca1e3a8be940a1d48">workgrp</a> = "workgroupsize"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1io_1_1val.html b/doc/doxygen/html/namespaceviennacl_1_1io_1_1val.html
deleted file mode 100644
index 5bc0c9a..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1io_1_1val.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::io::val Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io_1_1val.html">val</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>viennacl::io::val Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = "globalsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a> = "localsize"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a> = "vector"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a> = "matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a> = "compressed_matrix"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a> = "float"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a> = "double"</td></tr>
-</table>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="ad38083d81cdbc1c065fcc8d19df9c79c"></a><!-- doxytag: member="viennacl::io::val::compmat" ref="ad38083d81cdbc1c065fcc8d19df9c79c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ad38083d81cdbc1c065fcc8d19df9c79c">compmat</a> = "compressed_matrix"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="addc64712fb881ebddb8332add221899e"></a><!-- doxytag: member="viennacl::io::val::dbl" ref="addc64712fb881ebddb8332add221899e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#addc64712fb881ebddb8332add221899e">dbl</a> = "double"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab722d5306000ee3935395ba7ec7e0498"></a><!-- doxytag: member="viennacl::io::val::fl" ref="ab722d5306000ee3935395ba7ec7e0498" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#ab722d5306000ee3935395ba7ec7e0498">fl</a> = "float"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a71aafbd3bf9b6effc1ef44a724af3bfa"></a><!-- doxytag: member="viennacl::io::val::globsize" ref="a71aafbd3bf9b6effc1ef44a724af3bfa" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a71aafbd3bf9b6effc1ef44a724af3bfa">globsize</a> = "globalsize"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8ceabdecb9321ae870f08e5c2712735a"></a><!-- doxytag: member="viennacl::io::val::locsize" ref="a8ceabdecb9321ae870f08e5c2712735a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a8ceabdecb9321ae870f08e5c2712735a">locsize</a> = "localsize"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae3cf8320d226801ab9fc7b23bbb97075"></a><!-- doxytag: member="viennacl::io::val::matrix" ref="ae3cf8320d226801ab9fc7b23bbb97075" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="classviennacl_1_1matrix.html">matrix</a> = "matrix"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a80ef617bc6b5ed136631df552c86911c"></a><!-- doxytag: member="viennacl::io::val::vec" ref="a80ef617bc6b5ed136631df552c86911c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string <a class="el" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a> = "vector"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1linalg.html b/doc/doxygen/html/namespaceviennacl_1_1linalg.html
deleted file mode 100644
index b51f9e4..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1linalg.html
+++ /dev/null
@@ -1,4272 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::linalg Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>viennacl::linalg Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix. <a href="structviennacl_1_1linalg_1_1lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix. <a href="structviennacl_1_1linalg_1_1upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing a lower triangular matrix with unit diagonal. <a href="structviennacl_1_1linalg_1_1unit__lower__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing an upper triangular matrix with unit diagonal. <a href="structviennacl_1_1linalg_1_1unit__upper__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">no_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag class representing the use of no preconditioner. <a href="classviennacl_1_1linalg_1_1no__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the stabilized Bi-conjugate gradient solver. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. <a href="classviennacl_1_1linalg_1_1bicgstab__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the conjugate gradient Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. <a href="classviennacl_1_1linalg_1_1cg__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for the solver GMRES. Used for supplying solver parameters and for dispatching the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function. <a href="classviennacl_1_1linalg_1_1gmres__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for incomplete LU factorization with threshold (ILUT). <a href="classviennacl_1_1linalg_1_1ilut__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond.html">ilut_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1ilut__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">ilut_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">ILUT preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1ilut__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__tag.html">jacobi_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a jacobi preconditioner. <a href="classviennacl_1_1linalg_1_1jacobi__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond.html">jacobi_precond</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1jacobi__precond.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">jacobi_precond< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1jacobi__precond_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a row preconditioner. <a href="classviennacl_1_1linalg_1_1row__scaling__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1row__scaling.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">norm_1_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^1-norm of a vector. <a href="#a2479f0743a32118e916cca8edb895c30"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">norm_2_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^2-norm of a vector - implementation. <a href="#a96a2ee028641ffd7b80e6a1bfad34c6a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">norm_inf_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the supremum-norm of a vector. <a href="#a43009c5365c78c81463f54c2848378ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication. <a href="#a5e71c3317fe25d0ce5e31be66597d8bb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa965a1bc156b037f57b6a449dde4c7d1">prod_impl</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#aa965a1bc156b037f57b6a449dde4c7d1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a79ec888c8ac1026f4591179fdd19e0de">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a79ec888c8ac1026f4591179fdd19e0de"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT1, unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors. <a href="#a23fbff833bbc632131b761e732bce72b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). <a href="#afc191e1a26f0c0037e320a3b7dc831cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the stabilized Bi-conjugate gradient solver. <a href="#ab50f87d195eb82ddbe5ce910e914bc55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7eb0bd2b912aa3c5d83aa4801e7e89fd">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adbcb7f6a46ca520d01f6ce53f83f5069">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1bicgstab__tag.html">bicgstab_tag</a> const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned stabilized Bi-conjugate gradient solver. <a href="#adbcb7f6a46ca520d01f6ce53f83f5069"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6bc45bf37430c67d6a32ed8e10e77e94">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the conjugate gradient solver without preconditioner. <a href="#a6bc45bf37430c67d6a32ed8e10e77e94"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a560520300c350a1d8afa44d5c036b48b">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> const &tag, <a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#adefd0a97aaeaa8eb75097847443c6ee1">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1cg__tag.html">cg_tag</a> const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the preconditioned conjugate gradient solver. <a href="#adefd0a97aaeaa8eb75097847443c6ee1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a469b22e14078bba1451afb09bbd2f7cc">prod_impl</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result, size_t NUM_THREADS=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. <a href="#a469b22e14078bba1451afb09bbd2f7cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210">inplace_solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &L, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a lower triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> with unit diagonal. Typically used for LU substitutions. <a href="#ae927d6abe755d74744ec5ee9bd191210"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6d7d0a974cd68a51c4d5c4b7a16c1d28">solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &L, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, const <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a6d7d0a974cd68a51c4d5c4b7a16c1d28"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa3a114636b1b542dfb42f48d2a0200a">inplace_solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &U, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace solution of a upper triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. Typically used for LU substitutions. <a href="#aaa3a114636b1b542dfb42f48d2a0200a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int MAT_ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa338acd99f7bfac8c0210ab05ecaa09">solve</a> (<a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, MAT_ALIGNMENT > const &L, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#aaa338acd99f7bfac8c0210ab05ecaa09"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VECTOR_ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7984796b04f748d616d1071b0e70850b">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, size_t NUM_THREADS)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#a7984796b04f748d616d1071b0e70850b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afa56b176c5b19331a2fd286cac2f9c92">prod_impl</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< TYPE, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. <a href="#afa56b176c5b19331a2fd286cac2f9c92"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18293ef61ad46907177e280d4b1d680a">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 > &mat, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems. <a href="#a18293ef61ad46907177e280d4b1d680a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0ec9d2642d98a204f1de4fdad9063c14">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 > &mat, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems. <a href="#a0ec9d2642d98a204f1de4fdad9063c14"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad849b3114b76777bb0162ddf3fe8eba2">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, op_trans > &proxy, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. <a href="#ad849b3114b76777bb0162ddf3fe8eba2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int A1, unsigned int A2, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aae8acccfb7520c1c75d8bbb10130aa4a">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, A1 >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. <a href="#aae8acccfb7520c1c75d8bbb10130aa4a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1fa59efa7e0a65e6e9c949b441696af1">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a373c29fa2cb02177b1450d36eabeb265">inplace_solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. <a href="#a373c29fa2cb02177b1450d36eabeb265"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a658f2de0ab6804ebabbc4248adc2d927">solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A > &A, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a658f2de0ab6804ebabbc4248adc2d927"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a13d7be38f0fbef200ccbe90d9240e542">solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for C = solve(A, B^T, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a13d7be38f0fbef200ccbe90d9240e542"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9f5cb80858484131ecb73e867b2bf794">solve</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(mat, vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a9f5cb80858484131ecb73e867b2bf794"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aec73c039978029c091e70224bf283ed5">solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#aec73c039978029c091e70224bf283ed5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, <br class="typebreak"/>
-ALIGNMENT_B > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a18da6b35b9790a1acd824dee6a8fb76a">solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy_A, const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy_B, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#a18da6b35b9790a1acd824dee6a8fb76a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename TAG > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#add76ce64e200f9193156a98a15bf42fd">solve</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. <a href="#add76ce64e200f9193156a98a15bf42fd"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa3e7727b42bd95f5d1e5dd5366f807">lu_factorize</a> (<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU factorization of a dense matrix. <a href="#a2aa3e7727b42bd95f5d1e5dd5366f807"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F1 , typename F2 , unsigned int ALIGNMENT_A, unsigned int ALIGNMENT_B> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1407e42bdce9d821baaf5d4163a09dd1">lu_substitute</a> (<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F1, ALIGNMENT_A > const &A, <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F2, ALIGNMENT_B > &B)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs. <a href="#a1407e42bdce9d821baaf5d4163a09dd1"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9da85acf3d7f22c869dfd52791a25d55">lu_substitute</a> (<a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > const &mat, <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VEC_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">LU substitution for the system LU = rhs. <a href="#a9da85acf3d7f22c869dfd52791a25d55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType , typename PreconditionerType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a76b4d001b76edd2253dc7d3a2852b391">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> const &tag, PreconditionerType const &precond)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the GMRES solver. <a href="#a76b4d001b76edd2253dc7d3a2852b391"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad590c4eadb76eea1a806c3c4c026ba66">solve</a> (const MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorType const &rhs, <a class="el" href="classviennacl_1_1linalg_1_1gmres__tag.html">gmres_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience overload of the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function using GMRES. Per default, no preconditioner is used. <a href="#ad590c4eadb76eea1a806c3c4c026ba66"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad81c044903c3d571c5fa1354e94ce817">ilut_inc_row_iterator_to_row_index</a> (T &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k. <a href="#ad81c044903c3d571c5fa1354e94ce817"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8564080fc80b938370442ac4b9ba748f">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">viennacl::tools::sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k. <a href="#a8564080fc80b938370442ac4b9ba748f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a85b825153bda885996e0e2986854ab77">ilut_inc_row_iterator_to_row_index</a> (<a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">viennacl::tools::const_sparse_matrix_adapter</a>< ScalarType > &row_iter, unsigned int k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments a row iterator (iteration along increasing row indices) up to a certain row index k. <a href="#a85b825153bda885996e0e2986854ab77"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename LUType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa1642cbf74be37d2ae455606506dc578">precondition</a> (MatrixType const &input, LUType &output, <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html">ilut_tag</a> const &tag)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a ILU-preconditioner with threshold. <a href="#aa1642cbf74be37d2ae455606506dc578"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab0726586b403c9538056414240f973eb">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a unit lower triangular system. <a href="#ab0726586b403c9538056414240f973eb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8160c457245b80c37acc7f3cfcc81a8f">ilu_inplace_solve</a> (MatrixType const &mat, VectorType &vec, <a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic inplace solution of a upper triangular system. <a href="#a8160c457245b80c37acc7f3cfcc81a8f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType , typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afe44b3505a4625dad0b551e648f3aff0">ilu_lu_substitute</a> (MatrixType const &mat, VectorType &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Generic LU substitution. <a href="#afe44b3505a4625dad0b551e648f3aff0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT1 , typename VectorT2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT1::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae45d23e88210e06b69cd9fdc871f3dc9">inner_prod</a> (VectorT1 const &v1, VectorT2 const &v2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT1 >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment1, unsigned int alignment2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1348122d27efc695914431a7e9e15718">inner_prod</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > const &vector1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment2 > const &vector2, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f">add</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix. <a href="#a2777d6a19ce110ae9df6609f1677be0f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950">inplace_add</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another. <a href="#a225d1c31fb7c1dac9f5b94f17ae1f950"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e">sub</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds two dense matrices and writes the result to a third matrix. <a href="#a707ace72b7ff8ad1e3a9ff2606567f1e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6">inplace_sub</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &result, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a dense matrix to another. <a href="#ae88903a9ae8dbc3fc47db7f37da326a6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, SCALARTYPE val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar. <a href="#a0e4c7521b309670969d542805ac87b35"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4501136a87a9d6294c210628ffcb23d0">inplace_mult</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar. <a href="#a4501136a87a9d6294c210628ffcb23d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33">inplace_divide</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &result, <a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiplies a dense matrix by a scalar. <a href="#a6e86b6169a6ff7495734d3eef5d4fd33"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbc7f86d9d7e24ff1eae02fe976bc77d">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication. <a href="#abbc7f86d9d7e24ff1eae02fe976bc77d"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, <br class="typebreak"/>
-ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><br class="typebreak"/>
-< SCALARTYPE, F, ALIGNMENT ><br class="typebreak"/>
-, op_trans >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VECTOR_ALIGNMENT >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a4f088d9329b8c801492830a519fdef15">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class that represents matrix-vector multiplication with a transposed matrix. <a href="#a4f088d9329b8c801492830a519fdef15"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#af8a3b3e7b5421283ccdc96c07ce3c624">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT >, op_trans > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Unwraps the transposed matrix proxy and forwards to <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl()</a>. <a href="#af8a3b3e7b5421283ccdc96c07ce3c624"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c">trans_prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-vector multiplication with a transposed matrix. <a href="#a0c03a1482aebb921ce45f3b1c933697c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1294bf672bcc55c62d1622b07b44425e">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C, int block_size=15)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#a1294bf672bcc55c62d1622b07b44425e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aa03a4515a4033a22afc6f2e9bfad1ed6">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#aa03a4515a4033a22afc6f2e9bfad1ed6"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07e0985a7c2429067b483238d0ffeb2a">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#a07e0985a7c2429067b483238d0ffeb2a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class TYPE , typename F1 , typename F2 , typename F3 , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a21163d892b2568fa4fa3abe750a5504f">prod_impl</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F1, ALIGNMENT >, op_trans > &A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a>< TYPE, F2, ALIGNMENT >, op_trans > &B, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > &C)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Carries out matrix-matrix multiplication. <a href="#a21163d892b2568fa4fa3abe750a5504f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int VA1, unsigned int VA2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, VA1 >, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, <br class="typebreak"/>
-VA2 >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a1b56d764864ae3d91bb6bac2ae87bec8">outer_prod</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update. <a href="#a1b56d764864ae3d91bb6bac2ae87bec8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a90c6aa1f54abd466421ea06bf9b49716">rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update. <a href="#a90c6aa1f54abd466421ea06bf9b49716"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a46f8f468d8d1d6deec2a4d906f987e85">scaled_rank_1_update</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat1, SCALARTYPE val, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update. <a href="#a46f8f468d8d1d6deec2a4d906f987e85"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_1 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ac5e7e99c21b05b4db0e9422d9c9ed181">norm_1</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &<a class="el" href="classviennacl_1_1vector.html">vector</a>, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_2 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12a0a2106e96f8f1625b6c5bdec90f4c">norm_2</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_inf > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">norm_inf</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T , typename A1 , typename A2 , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07b1f6f849c9950dd557bbf3e38f569d">prod_impl</a> (std::vector< std::vector< T, A1 >, A2 > const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorT const &<a class="el" href="classviennacl_1_1vector.html">vector</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KEY , typename DATA , typename COMPARE , typename AMAP , typename AVEC , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8bb2b3cdaa265974abb81154593357b3">prod_impl</a> (std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorT const &<a class="el" href="classviennacl_1_1vector.html">vector</a>)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a> (MatrixT const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, VectorT const &<a class="el" href="classviennacl_1_1vector.html">vector</a>, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">prod</a> (MatrixT const &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, ALIGNMENT > const &<a class="el" href="classviennacl_1_1vector.html">vector</a>, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12682dd49c61d3897b1c18e49042c721">prod</a> (MatrixT const &matrix_A, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT > const &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_trans ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">prod</a> (MatrixT const &matrix_A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, viennacl::op_trans > &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9ea1aff45c0fb10d62801c9c25c8831e">add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a9ea1aff45c0fb10d62801c9c25c8831e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aca5f0d1977c4cd4e70cc6af6c91fce86">inplace_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aca5f0d1977c4cd4e70cc6af6c91fce86"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aad5f201a0e90a230b4376deb311c019a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">inplace_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a04b2c67e5839525ba813da61fde893ab"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#acae4aaa06516b42063bd44c12e5d56d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7cefe6d56ec8672118ff744eac103cae">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a7cefe6d56ec8672118ff744eac103cae"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#affe330e509b142a9db9004f6a67c4183">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#affe330e509b142a9db9004f6a67c4183"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa5a5587eeadc46ce37159c0429f13e">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a2aa5a5587eeadc46ce37159c0429f13e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">divide</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a0acf4875161f1193bcda16d33a66ce61"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9dfce56da8c2b9d901800b205fb6b2e2">inplace_divide</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a9dfce56da8c2b9d901800b205fb6b2e2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a6047863f8fb097162ffad8b1b847d1df"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a136d1799060f2adc907c8b67371a4134">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, SCALARTYPE alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a136d1799060f2adc907c8b67371a4134"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a7fadfccd4d7dd18f74cbe448302236e7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa53a9e3743e89dd87f5e77d28621a52">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aaa53a9e3743e89dd87f5e77d28621a52"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">mul_sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a0bf813502bb4d25ab2613f1575a4fca3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">inplace_mul_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#ab2cf15c4dcf00b57cf6342492ab8ea8e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">inplace_div_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#abbe5a4f98fb91f55c405aa857af71d83"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">inplace_div_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1scalar.html">scalar</a>< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aad1b78ccd178079d1c3c503b6810dd21"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">cl_uint </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">index_norm_inf</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the index of the first entry that is equal to the supremum-norm in modulus. <a href="#ad87b9ecda483a69e5d5eed36928840da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">plane_rotation</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha, SCALARTYPE beta)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes a plane rotation of two vectors. <a href="#a38eb0d2bea8cb4a78253c9fe329000a9"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a2777d6a19ce110ae9df6609f1677be0f"></a><!-- doxytag: member="viennacl::linalg::add" ref="a2777d6a19ce110ae9df6609f1677be0f" args="(const viennacl::matrix< TYPE, F, ALIGNMENT > &mat1, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2, viennacl::matrix< TYPE, F, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::add </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds two dense matrices and writes the result to a third matrix. </p>
-<p>This is the implementation of the convenience expression result = mat1 + mat2;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9ea1aff45c0fb10d62801c9c25c8831e"></a><!-- doxytag: member="viennacl::linalg::add" ref="a9ea1aff45c0fb10d62801c9c25c8831e" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::add </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first addend. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second addend. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0acf4875161f1193bcda16d33a66ce61"></a><!-- doxytag: member="viennacl::linalg::divide" ref="a0acf4875161f1193bcda16d33a66ce61" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::divide </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = vec / alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The (inverse) scaling factor. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8160c457245b80c37acc7f3cfcc81a8f"></a><!-- doxytag: member="viennacl::linalg::ilu_inplace_solve" ref="a8160c457245b80c37acc7f3cfcc81a8f" args="(MatrixType const &mat, VectorType &vec, viennacl::linalg::upper_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::ilu_inplace_solve </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Generic inplace solution of a upper triangular system. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The right hand side vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab0726586b403c9538056414240f973eb"></a><!-- doxytag: member="viennacl::linalg::ilu_inplace_solve" ref="ab0726586b403c9538056414240f973eb" args="(MatrixType const &mat, VectorType &vec, viennacl::linalg::unit_lower_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::ilu_inplace_solve </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Generic inplace solution of a unit lower triangular system. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The right hand side vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="afe44b3505a4625dad0b551e648f3aff0"></a><!-- doxytag: member="viennacl::linalg::ilu_lu_substitute" ref="afe44b3505a4625dad0b551e648f3aff0" args="(MatrixType const &mat, VectorType &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::ilu_lu_substitute </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Generic LU substitution. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The right hand side vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a85b825153bda885996e0e2986854ab77"></a><!-- doxytag: member="viennacl::linalg::ilut_inc_row_iterator_to_row_index" ref="a85b825153bda885996e0e2986854ab77" args="(viennacl::tools::const_sparse_matrix_adapter< ScalarType > &row_iter, unsigned int k)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::ilut_inc_row_iterator_to_row_index </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">viennacl::tools::const_sparse_matrix_adapter</a>< ScalarType > & </td>
- <td class="paramname"> <em>row_iter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>k</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Increments a row iterator (iteration along increasing row indices) up to a certain row index k. </p>
-<p>Specialization for the const sparse matrix adapter shipped with ViennaCL</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>row_iter</em> </td><td>The row iterator </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>The final row index </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad81c044903c3d571c5fa1354e94ce817"></a><!-- doxytag: member="viennacl::linalg::ilut_inc_row_iterator_to_row_index" ref="ad81c044903c3d571c5fa1354e94ce817" args="(T &row_iter, unsigned int k)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::ilut_inc_row_iterator_to_row_index </td>
- <td>(</td>
- <td class="paramtype">T & </td>
- <td class="paramname"> <em>row_iter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>k</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Increments a row iterator (iteration along increasing row indices) up to a certain row index k. </p>
-<p>Generic implementation using the iterator concept from boost::numeric::ublas. Could not find a better way for sparse matrices...</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>row_iter</em> </td><td>The row iterator </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>The final row index </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8564080fc80b938370442ac4b9ba748f"></a><!-- doxytag: member="viennacl::linalg::ilut_inc_row_iterator_to_row_index" ref="a8564080fc80b938370442ac4b9ba748f" args="(viennacl::tools::sparse_matrix_adapter< ScalarType > &row_iter, unsigned int k)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::ilut_inc_row_iterator_to_row_index </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">viennacl::tools::sparse_matrix_adapter</a>< ScalarType > & </td>
- <td class="paramname"> <em>row_iter</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>k</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Increments a row iterator (iteration along increasing row indices) up to a certain row index k. </p>
-<p>Specialization for the sparse matrix adapter shipped with ViennaCL</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>row_iter</em> </td><td>The row iterator </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>k</em> </td><td>The final row index </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad87b9ecda483a69e5d5eed36928840da"></a><!-- doxytag: member="viennacl::linalg::index_norm_inf" ref="ad87b9ecda483a69e5d5eed36928840da" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">cl_uint viennacl::linalg::index_norm_inf </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vcl_vec</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the index of the first entry that is equal to the supremum-norm in modulus. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result. Note that the result must be a CPU scalar (unsigned int), since gpu scalars are floating point types. </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ae45d23e88210e06b69cd9fdc871f3dc9"></a><!-- doxytag: member="viennacl::linalg::inner_prod" ref="ae45d23e88210e06b69cd9fdc871f3dc9" args="(VectorT1 const &v1, VectorT2 const &v2, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT1 >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorT1::value_type viennacl::linalg::inner_prod </td>
- <td>(</td>
- <td class="paramtype">VectorT1 const & </td>
- <td class="paramname"> <em>v1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorT2 const & </td>
- <td class="paramname"> <em>v2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT1 >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1348122d27efc695914431a7e9e15718"></a><!-- doxytag: member="viennacl::linalg::inner_prod" ref="a1348122d27efc695914431a7e9e15718" args="(viennacl::vector< ScalarType, alignment1 > const &vector1, viennacl::vector< ScalarType, alignment2 > const &vector2, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment1 > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment1>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment2>, viennacl::op_inner_prod > viennacl::linalg::inner_prod </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > const & </td>
- <td class="paramname"> <em>vector1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment2 > const & </td>
- <td class="paramname"> <em>vector2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment1 > >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afc191e1a26f0c0037e320a3b7dc831cc"></a><!-- doxytag: member="viennacl::linalg::inner_prod_impl" ref="afc191e1a26f0c0037e320a3b7dc831cc" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void inner_prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar (on the gpu) </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a23fbff833bbc632131b761e732bce72b"></a><!-- doxytag: member="viennacl::linalg::inner_prod_impl" ref="a23fbff833bbc632131b761e732bce72b" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT1 > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT2 > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 >, viennacl::op_inner_prod > inner_prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > & </td>
- <td class="paramname"> <em>vec2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the inner product of two vectors. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="aca5f0d1977c4cd4e70cc6af6c91fce86"></a><!-- doxytag: member="viennacl::linalg::inplace_add" ref="aca5f0d1977c4cd4e70cc6af6c91fce86" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_add </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += vec2.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The result. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The addend </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a225d1c31fb7c1dac9f5b94f17ae1f950"></a><!-- doxytag: member="viennacl::linalg::inplace_add" ref="a225d1c31fb7c1dac9f5b94f17ae1f950" args="(viennacl::matrix< TYPE, F, ALIGNMENT > &result, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_add </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a dense matrix to another. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="abbe5a4f98fb91f55c405aa857af71d83"></a><!-- doxytag: member="viennacl::linalg::inplace_div_add" ref="abbe5a4f98fb91f55c405aa857af71d83" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_div_add </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += vec2 / alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The vector update </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the second vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aad1b78ccd178079d1c3c503b6810dd21"></a><!-- doxytag: member="viennacl::linalg::inplace_div_sub" ref="aad1b78ccd178079d1c3c503b6810dd21" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_div_sub </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 -= vec2 / alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The vector update </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the second vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9dfce56da8c2b9d901800b205fb6b2e2"></a><!-- doxytag: member="viennacl::linalg::inplace_divide" ref="a9dfce56da8c2b9d901800b205fb6b2e2" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_divide </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result *= alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The (inverse) scaling factor. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6e86b6169a6ff7495734d3eef5d4fd33"></a><!-- doxytag: member="viennacl::linalg::inplace_divide" ref="a6e86b6169a6ff7495734d3eef5d4fd33" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &result, viennacl::scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_divide </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplies a dense matrix by a scalar. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7fadfccd4d7dd18f74cbe448302236e7"></a><!-- doxytag: member="viennacl::linalg::inplace_mul_add" ref="a7fadfccd4d7dd18f74cbe448302236e7" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_mul_add </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += alpha * vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aaa53a9e3743e89dd87f5e77d28621a52"></a><!-- doxytag: member="viennacl::linalg::inplace_mul_add" ref="aaa53a9e3743e89dd87f5e77d28621a52" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_mul_add </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 += alpha * vec2, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab2cf15c4dcf00b57cf6342492ab8ea8e"></a><!-- doxytag: member="viennacl::linalg::inplace_mul_sub" ref="ab2cf15c4dcf00b57cf6342492ab8ea8e" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_mul_sub </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 -= alpha * vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The result vector which is updated </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second operand. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the vector update. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="affe330e509b142a9db9004f6a67c4183"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="affe330e509b142a9db9004f6a67c4183" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_mult </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result *= alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2aa5a5587eeadc46ce37159c0429f13e"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="a2aa5a5587eeadc46ce37159c0429f13e" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_mult </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>alpha</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result *= alpha, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4501136a87a9d6294c210628ffcb23d0"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="a4501136a87a9d6294c210628ffcb23d0" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &result, viennacl::scalar< SCALARTYPE > const &val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_mult </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1scalar.html">viennacl::scalar</a>< SCALARTYPE > const & </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplies a dense matrix by a scalar. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0e4c7521b309670969d542805ac87b35"></a><!-- doxytag: member="viennacl::linalg::inplace_mult" ref="a0e4c7521b309670969d542805ac87b35" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &result, SCALARTYPE val)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_mult </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>val</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiplies a dense matrix by a scalar. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae927d6abe755d74744ec5ee9bd191210"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="ae927d6abe755d74744ec5ee9bd191210" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, viennacl::linalg::unit_lower_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
- <td class="paramname"> <em>L</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace solution of a lower triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a> with unit diagonal. Typically used for LU substitutions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aaa3a114636b1b542dfb42f48d2a0200a"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="aaa3a114636b1b542dfb42f48d2a0200a" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &U, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, viennacl::linalg::upper_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
- <td class="paramname"> <em>U</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace solution of a upper triangular <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. Typically used for LU substitutions. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>U</em> </td><td>The upper triangular matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a18293ef61ad46907177e280d4b1d680a"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a18293ef61ad46907177e280d4b1d680a" args="(const matrix< SCALARTYPE, F1, A1 > &mat, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F1, A1 > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">matrix< SCALARTYPE, F2, A2 > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SOLVERTAG </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of row vectors, where the solution is directly written to </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0ec9d2642d98a204f1de4fdad9063c14"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a0ec9d2642d98a204f1de4fdad9063c14" args="(const matrix< SCALARTYPE, F1, A1 > &mat, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F1, A1 > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SOLVERTAG </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The (transposed) matrix of row vectors, where the solution is directly written to </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad849b3114b76777bb0162ddf3fe8eba2"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="ad849b3114b76777bb0162ddf3fe8eba2" args="(const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, matrix< SCALARTYPE, F2, A2 > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">matrix< SCALARTYPE, F2, A2 > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SOLVERTAG </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The system matrix proxy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix holding the load vectors, where the solution is directly written to </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aae8acccfb7520c1c75d8bbb10130aa4a"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="aae8acccfb7520c1c75d8bbb10130aa4a" args="(const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > &proxy, const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > &B, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, A1 >, const matrix< SCALARTYPE, F1, A1 >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, A2 >, const matrix< SCALARTYPE, F2, A2 >, op_trans > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SOLVERTAG </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The system matrix proxy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix holding the load vectors, where the solution is directly written to </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1fa59efa7e0a65e6e9c949b441696af1"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a1fa59efa7e0a65e6e9c949b441696af1" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SOLVERTAG </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a373c29fa2cb02177b1450d36eabeb265"></a><!-- doxytag: member="viennacl::linalg::inplace_solve" ref="a373c29fa2cb02177b1450d36eabeb265" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, vector< SCALARTYPE, VEC_ALIGNMENT > &vec, SOLVERTAG)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_solve </td>
- <td>(</td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SOLVERTAG </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The system matrix proxy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a04b2c67e5839525ba813da61fde893ab"></a><!-- doxytag: member="viennacl::linalg::inplace_sub" ref="a04b2c67e5839525ba813da61fde893ab" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_sub </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes vec1 -= vec2.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The result. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The subtracted vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae88903a9ae8dbc3fc47db7f37da326a6"></a><!-- doxytag: member="viennacl::linalg::inplace_sub" ref="ae88903a9ae8dbc3fc47db7f37da326a6" args="(viennacl::matrix< TYPE, F, ALIGNMENT > &result, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::inplace_sub </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds a dense matrix to another. </p>
-<p>This is the implementation of the convenience expression result += mat1;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a2aa3e7727b42bd95f5d1e5dd5366f807"></a><!-- doxytag: member="viennacl::linalg::lu_factorize" ref="a2aa3e7727b42bd95f5d1e5dd5366f807" args="(matrix< SCALARTYPE, F, ALIGNMENT > &mat)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::lu_factorize </td>
- <td>(</td>
- <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>LU factorization of a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix, where the LU matrices are directly written to. The implicit unit diagonal of L is not written. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1407e42bdce9d821baaf5d4163a09dd1"></a><!-- doxytag: member="viennacl::linalg::lu_substitute" ref="a1407e42bdce9d821baaf5d4163a09dd1" args="(matrix< SCALARTYPE, F1, ALIGNMENT_A > const &A, matrix< SCALARTYPE, F2, ALIGNMENT_B > &B)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::lu_substitute </td>
- <td>(</td>
- <td class="paramtype">matrix< SCALARTYPE, F1, ALIGNMENT_A > const & </td>
- <td class="paramname"> <em>A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">matrix< SCALARTYPE, F2, ALIGNMENT_B > & </td>
- <td class="paramname"> <em>B</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>LU substitution for the system LU = rhs. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>A</em> </td><td>The system matrix, where the LU matrices are directly written to. The implicit unit diagonal of L is not written. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of load vectors, where the solution is directly written to </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a9da85acf3d7f22c869dfd52791a25d55"></a><!-- doxytag: member="viennacl::linalg::lu_substitute" ref="a9da85acf3d7f22c869dfd52791a25d55" args="(matrix< SCALARTYPE, F, ALIGNMENT > const &mat, vector< SCALARTYPE, VEC_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::lu_substitute </td>
- <td>(</td>
- <td class="paramtype">matrix< SCALARTYPE, F, ALIGNMENT > const & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>LU substitution for the system LU = rhs. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix, where the LU matrices are directly written to. The implicit unit diagonal of L is not written. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6047863f8fb097162ffad8b1b847d1df"></a><!-- doxytag: member="viennacl::linalg::mul_add" ref="a6047863f8fb097162ffad8b1b847d1df" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::mul_add </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = alpha * vec1 + vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a136d1799060f2adc907c8b67371a4134"></a><!-- doxytag: member="viennacl::linalg::mul_add" ref="a136d1799060f2adc907c8b67371a4134" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, SCALARTYPE alpha, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::mul_add </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>alpha</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = alpha * vec1 + vec2, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first added </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first addend. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second added. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0bf813502bb4d25ab2613f1575a4fca3"></a><!-- doxytag: member="viennacl::linalg::mul_sub" ref="a0bf813502bb4d25ab2613f1575a4fca3" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::mul_sub </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = alpha * vec1 - vec2, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor for the first vector. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second operand. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="acae4aaa06516b42063bd44c12e5d56d0"></a><!-- doxytag: member="viennacl::linalg::mult" ref="acae4aaa06516b42063bd44c12e5d56d0" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::mult </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > const & </td>
- <td class="paramname"> <em>alpha</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = vec * alpha, where alpha is a gpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7cefe6d56ec8672118ff744eac103cae"></a><!-- doxytag: member="viennacl::linalg::mult" ref="a7cefe6d56ec8672118ff744eac103cae" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::mult </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>alpha</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>Computes result = vec * alpha, where alpha is a cpu scalar</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector to be scaled. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The scaling factor. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ab37ecf5aa97762b3e174b862912f510a"></a><!-- doxytag: member="viennacl::linalg::norm_1" ref="ab37ecf5aa97762b3e174b862912f510a" args="(VectorT const &v1, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorT::value_type viennacl::linalg::norm_1 </td>
- <td>(</td>
- <td class="paramtype">VectorT const & </td>
- <td class="paramname"> <em>v1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac5e7e99c21b05b4db0e9422d9c9ed181"></a><!-- doxytag: member="viennacl::linalg::norm_1" ref="ac5e7e99c21b05b4db0e9422d9c9ed181" args="(viennacl::vector< ScalarType, alignment > const &vector, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, viennacl::op_norm_1 > viennacl::linalg::norm_1 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const & </td>
- <td class="paramname"> <em>vector</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2479f0743a32118e916cca8edb895c30"></a><!-- doxytag: member="viennacl::linalg::norm_1_impl" ref="a2479f0743a32118e916cca8edb895c30" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void norm_1_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vcl_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the l^1-norm of a vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a87acc0739e4f1bc63934e9ad24f35a9a"></a><!-- doxytag: member="viennacl::linalg::norm_2" ref="a87acc0739e4f1bc63934e9ad24f35a9a" args="(VectorT const &v1, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorT::value_type viennacl::linalg::norm_2 </td>
- <td>(</td>
- <td class="paramtype">VectorT const & </td>
- <td class="paramname"> <em>v1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a12a0a2106e96f8f1625b6c5bdec90f4c"></a><!-- doxytag: member="viennacl::linalg::norm_2" ref="a12a0a2106e96f8f1625b6c5bdec90f4c" args="(viennacl::vector< ScalarType, alignment > const &v, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, viennacl::op_norm_2 > viennacl::linalg::norm_2 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const & </td>
- <td class="paramname"> <em>v</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a96a2ee028641ffd7b80e6a1bfad34c6a"></a><!-- doxytag: member="viennacl::linalg::norm_2_impl" ref="a96a2ee028641ffd7b80e6a1bfad34c6a" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void norm_2_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vcl_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the l^2-norm of a vector - implementation. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aadc500239f2e1967e584b71171cba268"></a><!-- doxytag: member="viennacl::linalg::norm_inf" ref="aadc500239f2e1967e584b71171cba268" args="(viennacl::vector< ScalarType, alignment > const &v1, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector< ScalarType, alignment > >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, alignment>, viennacl::op_norm_inf > viennacl::linalg::norm_inf </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const & </td>
- <td class="paramname"> <em>v1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a03a5b5434ce08fac52aa22dbb684029c"></a><!-- doxytag: member="viennacl::linalg::norm_inf" ref="a03a5b5434ce08fac52aa22dbb684029c" args="(VectorT const &v1, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorT::value_type viennacl::linalg::norm_inf </td>
- <td>(</td>
- <td class="paramtype">VectorT const & </td>
- <td class="paramname"> <em>v1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a43009c5365c78c81463f54c2848378ca"></a><!-- doxytag: member="viennacl::linalg::norm_inf_impl" ref="a43009c5365c78c81463f54c2848378ca" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void norm_inf_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vcl_vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">scalar< SCALARTYPE > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Computes the supremum-norm of a vector. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vcl_vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result scalar </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a1b56d764864ae3d91bb6bac2ae87bec8"></a><!-- doxytag: member="viennacl::linalg::outer_prod" ref="a1b56d764864ae3d91bb6bac2ae87bec8" args="(const viennacl::vector< SCALARTYPE, VA1 > &vec1, const viennacl::vector< SCALARTYPE, VA2 > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA1>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VA2>, op_prod> viennacl::linalg::outer_prod </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA1 > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VA2 > & </td>
- <td class="paramname"> <em>vec2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class for the operation mat += vec1 * vec2^T, i.e. a rank 1 update. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a38eb0d2bea8cb4a78253c9fe329000a9"></a><!-- doxytag: member="viennacl::linalg::plane_rotation" ref="a38eb0d2bea8cb4a78253c9fe329000a9" args="(viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha, SCALARTYPE beta)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::plane_rotation </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>alpha</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>beta</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Computes a plane rotation of two vectors. </p>
-<p>Computes (x,y) <- (alpha * x + beta * y, -beta * x + alpha * y)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>alpha</em> </td><td>The first transformation coefficient </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>beta</em> </td><td>The second transformation coefficient </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa1642cbf74be37d2ae455606506dc578"></a><!-- doxytag: member="viennacl::linalg::precondition" ref="aa1642cbf74be37d2ae455606506dc578" args="(MatrixType const &input, LUType &output, ilut_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::precondition </td>
- <td>(</td>
- <td class="paramtype">MatrixType const & </td>
- <td class="paramname"> <em>input</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">LUType & </td>
- <td class="paramname"> <em>output</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">ilut_tag const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of a ILU-preconditioner with threshold. </p>
-<p>refer to Algorithm 10.6 by Saad's book (1996 edition)</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>input</em> </td><td>The input matrix. Type requirements: const_iterator1 for iteration along rows, const_iterator2 for iteration along columns </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>output</em> </td><td>The output matrix. Type requirements: const_iterator1 for iteration along rows, const_iterator2 for iteration along columns and write access via operator() </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>An <a class="el" href="classviennacl_1_1linalg_1_1ilut__tag.html" title="A tag for incomplete LU factorization with threshold (ILUT).">ilut_tag</a> in order to dispatch among several other preconditioners. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ae1687a9eb40c623b00c880cd88f176d7"></a><!-- doxytag: member="viennacl::linalg::prod" ref="ae1687a9eb40c623b00c880cd88f176d7" args="(MatrixT const &matrix, VectorT const &vector, typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorT viennacl::linalg::prod </td>
- <td>(</td>
- <td class="paramtype">MatrixT const & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorT const & </td>
- <td class="paramname"> <em>vector</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a12682dd49c61d3897b1c18e49042c721"></a><!-- doxytag: member="viennacl::linalg::prod" ref="a12682dd49c61d3897b1c18e49042c721" args="(MatrixT const &matrix_A, viennacl::matrix< NumericT, F, ALIGNMENT > const &matrix_B, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const MatrixT, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><NumericT, F, ALIGNMENT>, viennacl::op_prod > viennacl::linalg::prod </td>
- <td>(</td>
- <td class="paramtype">MatrixT const & </td>
- <td class="paramname"> <em>matrix_A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT > const & </td>
- <td class="paramname"> <em>matrix_B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe959c83610141222955cfa6c52ed961"></a><!-- doxytag: member="viennacl::linalg::prod" ref="abe959c83610141222955cfa6c52ed961" args="(MatrixT const &matrix, viennacl::vector< NumericT, ALIGNMENT > const &vector, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const MatrixT, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><NumericT, ALIGNMENT>, viennacl::op_prod > viennacl::linalg::prod </td>
- <td>(</td>
- <td class="paramtype">MatrixT const & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, ALIGNMENT > const & </td>
- <td class="paramname"> <em>vector</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acfb30430740c1e7b8ab2c81aee31878a"></a><!-- doxytag: member="viennacl::linalg::prod" ref="acfb30430740c1e7b8ab2c81aee31878a" args="(MatrixT const &matrix_A, const viennacl::matrix_expression< const viennacl::matrix< NumericT, F, ALIGNMENT >, const viennacl::matrix< NumericT, F, ALIGNMENT >, viennacl::op_trans > &matrix_B, typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value >::type *dummy=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const MatrixT, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><NumericT, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><NumericT, F, ALIGNMENT>, viennacl::op_trans >, viennacl::op_prod > viennacl::linalg::prod </td>
- <td>(</td>
- <td class="paramtype">MatrixT const & </td>
- <td class="paramname"> <em>matrix_A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, viennacl::op_trans > & </td>
- <td class="paramname"> <em>matrix_B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type * </td>
- <td class="paramname"> <em>dummy</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21163d892b2568fa4fa3abe750a5504f"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a21163d892b2568fa4fa3abe750a5504f" args="(const viennacl::matrix_expression< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const viennacl::matrix_expression< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
- <td class="paramname"> <em>C</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(trans(A), trans(B)); </p>
-
-</div>
-</div>
-<a class="anchor" id="abbc7f86d9d7e24ff1eae02fe976bc77d"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="abbc7f86d9d7e24ff1eae02fe976bc77d" args="(const viennacl::matrix< TYPE, F, ALIGNMENT > &mat, const viennacl::vector< TYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< TYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication. </p>
-<p>Implementation of the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a07b1f6f849c9950dd557bbf3e38f569d"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a07b1f6f849c9950dd557bbf3e38f569d" args="(std::vector< std::vector< T, A1 >, A2 > const &matrix, VectorT const &vector)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorT viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::vector< T, A1 >, A2 > const & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorT const & </td>
- <td class="paramname"> <em>vector</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a07e0985a7c2429067b483238d0ffeb2a"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a07e0985a7c2429067b483238d0ffeb2a" args="(const viennacl::matrix< TYPE, F1, ALIGNMENT > &A, const viennacl::matrix_expression< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > & </td>
- <td class="paramname"> <em>A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F2, ALIGNMENT >, const matrix< TYPE, F2, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
- <td class="paramname"> <em>C</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(A, trans(B)); </p>
-
-</div>
-</div>
-<a class="anchor" id="afa56b176c5b19331a2fd286cac2f9c92"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="afa56b176c5b19331a2fd286cac2f9c92" args="(const viennacl::coordinate_matrix< TYPE, ALIGNMENT > &mat, const viennacl::vector< TYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< TYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< TYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>Implementation of the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aa965a1bc156b037f57b6a449dde4c7d1"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="aa965a1bc156b037f57b6a449dde4c7d1" args="(const compressed_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1compressed__matrix.html">compressed_matrix</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > prod_impl </td>
- <td>(</td>
- <td class="paramtype">const compressed_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const vector< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a469b22e14078bba1451afb09bbd2f7cc"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a469b22e14078bba1451afb09bbd2f7cc" args="(const viennacl::compressed_matrix< TYPE, ALIGNMENT > &mat, const viennacl::vector< TYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< TYPE, VECTOR_ALIGNMENT > &result, size_t NUM_THREADS=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< TYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< TYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>NUM_THREADS</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>Implementation of the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NUM_THREADS</em> </td><td>Number of threads per work group. Can be used for fine-tuning. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a8bb2b3cdaa265974abb81154593357b3"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a8bb2b3cdaa265974abb81154593357b3" args="(std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const &matrix, VectorT const &vector)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorT viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorT const & </td>
- <td class="paramname"> <em>vector</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1294bf672bcc55c62d1622b07b44425e"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a1294bf672bcc55c62d1622b07b44425e" args="(const viennacl::matrix< TYPE, F1, ALIGNMENT > &A, const viennacl::matrix< TYPE, F2, ALIGNMENT > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C, int block_size=15)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F1, ALIGNMENT > & </td>
- <td class="paramname"> <em>A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
- <td class="paramname"> <em>C</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>block_size</em> = <code>15</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(A, B); </p>
-
-</div>
-</div>
-<a class="anchor" id="a79ec888c8ac1026f4591179fdd19e0de"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a79ec888c8ac1026f4591179fdd19e0de" args="(const coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression</a>< const <a class="el" href="classviennacl_1_1coordinate__matrix.html">coordinate_matrix</a>< SCALARTYPE, ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > prod_impl </td>
- <td>(</td>
- <td class="paramtype">const coordinate_matrix< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const vector< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a>. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a5e71c3317fe25d0ce5e31be66597d8bb"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a5e71c3317fe25d0ce5e31be66597d8bb" args="(const viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT >, op_prod > prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7984796b04f748d616d1071b0e70850b"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a7984796b04f748d616d1071b0e70850b" args="(const viennacl::coordinate_matrix< SCALARTYPE, ALIGNMENT > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec, size_t NUM_THREADS)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a><SCALARTYPE, ALIGNMENT>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, viennacl::op_prod > viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>NUM_THREADS</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a <a class="el" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a>. </p>
-<p>This is used for the convenience expression result = prod(mat, vec);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>NUM_THREADS</em> </td><td>Number of threads per work group. Can be used for fine-tuning. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a4f088d9329b8c801492830a519fdef15"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="a4f088d9329b8c801492830a519fdef15" args="(const viennacl::matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, const <a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F, ALIGNMENT>, op_trans>, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><SCALARTYPE, VECTOR_ALIGNMENT>, op_prod > viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns a proxy class that represents matrix-vector multiplication with a transposed matrix. </p>
-<p>This is used for the convenience expression result = trans(mat) * vec;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed matrix proxy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="af8a3b3e7b5421283ccdc96c07ce3c624"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="af8a3b3e7b5421283ccdc96c07ce3c624" args="(const viennacl::matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Unwraps the transposed matrix proxy and forwards to <a class="el" href="namespaceviennacl_1_1linalg.html#a0c03a1482aebb921ce45f3b1c933697c" title="Carries out matrix-vector multiplication with a transposed matrix.">trans_prod_impl()</a>. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa03a4515a4033a22afc6f2e9bfad1ed6"></a><!-- doxytag: member="viennacl::linalg::prod_impl" ref="aa03a4515a4033a22afc6f2e9bfad1ed6" args="(const viennacl::matrix_expression< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > &A, const viennacl::matrix< TYPE, F2, ALIGNMENT > &B, viennacl::matrix< TYPE, F3, ALIGNMENT > &C)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::prod_impl </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const matrix< TYPE, F1, ALIGNMENT >, const matrix< TYPE, F1, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F2, ALIGNMENT > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F3, ALIGNMENT > & </td>
- <td class="paramname"> <em>C</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-matrix multiplication. </p>
-<p>Implementation of C = prod(trans(A), B); </p>
-
-</div>
-</div>
-<a class="anchor" id="a90c6aa1f54abd466421ea06bf9b49716"></a><!-- doxytag: member="viennacl::linalg::rank_1_update" ref="a90c6aa1f54abd466421ea06bf9b49716" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::rank_1_update </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The implementation of the operation mat += vec1 * vec2^T, i.e. a rank 1 update. </p>
-<p>Implementation of the convenience expression result += outer_prod(vec1, vec2);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The matrix to be updated </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a46f8f468d8d1d6deec2a4d906f987e85"></a><!-- doxytag: member="viennacl::linalg::scaled_rank_1_update" ref="a46f8f468d8d1d6deec2a4d906f987e85" args="(viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat1, SCALARTYPE val, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::scaled_rank_1_update </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">SCALARTYPE </td>
- <td class="paramname"> <em>val</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>The implementation of the operation mat += alpha * vec1 * vec2^T, i.e. a scaled rank 1 update. </p>
-<p>Implementation of the convenience expression result += alpha * outer_prod(vec1, vec2);</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The matrix to be updated </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>The scaling factor </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a6d7d0a974cd68a51c4d5c4b7a16c1d28"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a6d7d0a974cd68a51c4d5c4b7a16c1d28" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, const viennacl::linalg::unit_lower_tag &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
- <td class="paramname"> <em>L</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">viennacl::linalg::unit_lower_tag</a> & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>The lower triangular sparse matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a76b4d001b76edd2253dc7d3a2852b391"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a76b4d001b76edd2253dc7d3a2852b391" args="(const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag, PreconditionerType const &precond)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">gmres_tag const & </td>
- <td class="paramname"> <em>tag</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">PreconditionerType const & </td>
- <td class="paramname"> <em>precond</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the GMRES solver. </p>
-<p>Following the algorithm proposed by Walker in "A Simpler GMRES"</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>precond</em> </td><td>A preconditioner. Precondition operation is done via member function apply() </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a6bc45bf37430c67d6a32ed8e10e77e94"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a6bc45bf37430c67d6a32ed8e10e77e94" args="(const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cg_tag const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the conjugate gradient solver without preconditioner. </p>
-<p>Following the algorithm in the book by Y. Saad "Iterative Methods for sparse linear systems"</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a658f2de0ab6804ebabbc4248adc2d927"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a658f2de0ab6804ebabbc4248adc2d927" args="(const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F1, ALIGNMENT_A > & </td>
- <td class="paramname"> <em>A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix< SCALARTYPE, F2, ALIGNMENT_B > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TAG const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for C = solve(A, B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>A</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of load vectors </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a560520300c350a1d8afa44d5c036b48b"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a560520300c350a1d8afa44d5c036b48b" args="(const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, viennacl::linalg::no_precond)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cg_tag const & </td>
- <td class="paramname"> <em>tag</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aec73c039978029c091e70224bf283ed5"></a><!-- doxytag: member="viennacl::linalg::solve" ref="aec73c039978029c091e70224bf283ed5" args="(const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy, const matrix< SCALARTYPE, F2, ALIGNMENT_B > &B, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix< SCALARTYPE, F2, ALIGNMENT_B > & </td>
- <td class="paramname"> <em>B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TAG const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), B, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed system matrix proxy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>B</em> </td><td>The matrix of load vectors </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="add76ce64e200f9193156a98a15bf42fd"></a><!-- doxytag: member="viennacl::linalg::solve" ref="add76ce64e200f9193156a98a15bf42fd" args="(const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > &proxy, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F, ALIGNMENT >, const matrix< SCALARTYPE, F, ALIGNMENT >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TAG const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed system matrix proxy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a7eb0bd2b912aa3c5d83aa4801e7e89fd"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a7eb0bd2b912aa3c5d83aa4801e7e89fd" args="(const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, viennacl::linalg::no_precond)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bicgstab_tag const & </td>
- <td class="paramname"> <em>tag</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1linalg_1_1no__precond.html">viennacl::linalg::no_precond</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab50f87d195eb82ddbe5ce910e914bc55"></a><!-- doxytag: member="viennacl::linalg::solve" ref="ab50f87d195eb82ddbe5ce910e914bc55" args="(const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bicgstab_tag const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the stabilized Bi-conjugate gradient solver. </p>
-<p>Following the description in "Iterative Methods for Sparse Linear Systems" by Y. Saad</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a13d7be38f0fbef200ccbe90d9240e542"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a13d7be38f0fbef200ccbe90d9240e542" args="(const matrix< SCALARTYPE, F1, ALIGNMENT_A > &A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F1, ALIGNMENT_A > & </td>
- <td class="paramname"> <em>A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > & </td>
- <td class="paramname"> <em>proxy</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TAG const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for C = solve(A, B^T, some_tag()); Creates a temporary result matrix and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>A</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy</em> </td><td>The transposed load vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="adbcb7f6a46ca520d01f6ce53f83f5069"></a><!-- doxytag: member="viennacl::linalg::solve" ref="adbcb7f6a46ca520d01f6ce53f83f5069" args="(const MatrixType &matrix, VectorType const &rhs, bicgstab_tag const &tag, PreconditionerType const &precond)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">bicgstab_tag const & </td>
- <td class="paramname"> <em>tag</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">PreconditionerType const & </td>
- <td class="paramname"> <em>precond</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the preconditioned stabilized Bi-conjugate gradient solver. </p>
-<p>Following the description of the unpreconditioned case in "Iterative Methods for Sparse Linear Systems" by Y. Saad</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>precond</em> </td><td>A preconditioner. Precondition operation is done via member function apply() </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="adefd0a97aaeaa8eb75097847443c6ee1"></a><!-- doxytag: member="viennacl::linalg::solve" ref="adefd0a97aaeaa8eb75097847443c6ee1" args="(const MatrixType &matrix, VectorType const &rhs, cg_tag const &tag, PreconditionerType const &precond)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cg_tag const & </td>
- <td class="paramname"> <em>tag</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">PreconditionerType const & </td>
- <td class="paramname"> <em>precond</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Implementation of the preconditioned conjugate gradient solver. </p>
-<p>Following Algorithm 9.1 in "Iterative Methods for Sparse Linear Systems" by Y. Saad</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>matrix</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>rhs</em> </td><td>The load vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Solver configuration tag </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>precond</em> </td><td>A preconditioner. Precondition operation is done via member function apply() </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The result vector </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a9f5cb80858484131ecb73e867b2bf794"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a9f5cb80858484131ecb73e867b2bf794" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TAG const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(mat, vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The system matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aaa338acd99f7bfac8c0210ab05ecaa09"></a><!-- doxytag: member="viennacl::linalg::solve" ref="aaa338acd99f7bfac8c0210ab05ecaa09" args="(compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const &L, const vector< SCALARTYPE, VEC_ALIGNMENT > &vec, viennacl::linalg::upper_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1vector.html">vector</a><SCALARTYPE, VEC_ALIGNMENT> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">compressed_matrix< SCALARTYPE, MAT_ALIGNMENT > const & </td>
- <td class="paramname"> <em>L</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const vector< SCALARTYPE, VEC_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">viennacl::linalg::upper_tag</a> const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, unit_lower_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>L</em> </td><td>The lower triangular sparse matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The load vector, where the solution is directly written to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a18da6b35b9790a1acd824dee6a8fb76a"></a><!-- doxytag: member="viennacl::linalg::solve" ref="a18da6b35b9790a1acd824dee6a8fb76a" args="(const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > &proxy_A, const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > &proxy_B, TAG const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1matrix.html">matrix</a><SCALARTYPE, F2, ALIGNMENT_B> viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F1, ALIGNMENT_A >, const matrix< SCALARTYPE, F1, ALIGNMENT_A >, op_trans > & </td>
- <td class="paramname"> <em>proxy_A</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const matrix_expression< const matrix< SCALARTYPE, F2, ALIGNMENT_B >, const matrix< SCALARTYPE, F2, ALIGNMENT_B >, op_trans > & </td>
- <td class="paramname"> <em>proxy_B</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">TAG const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience functions for result = solve(trans(mat), vec, some_tag()); Creates a temporary result vector and forwards the request to <a class="el" href="namespaceviennacl_1_1linalg.html#ae927d6abe755d74744ec5ee9bd191210" title="Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU su...">inplace_solve()</a>. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>proxy_A</em> </td><td>The transposed system matrix proxy </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>proxy_B</em> </td><td>The transposed matrix of load vectors, where the solution is directly written to </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>tag</em> </td><td>Dispatch tag </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="ad590c4eadb76eea1a806c3c4c026ba66"></a><!-- doxytag: member="viennacl::linalg::solve" ref="ad590c4eadb76eea1a806c3c4c026ba66" args="(const MatrixType &matrix, VectorType const &rhs, gmres_tag const &tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">VectorType viennacl::linalg::solve </td>
- <td>(</td>
- <td class="paramtype">const MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">VectorType const & </td>
- <td class="paramname"> <em>rhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">gmres_tag const & </td>
- <td class="paramname"> <em>tag</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience overload of the <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a> function using GMRES. Per default, no preconditioner is used. </p>
-
-</div>
-</div>
-<a class="anchor" id="a707ace72b7ff8ad1e3a9ff2606567f1e"></a><!-- doxytag: member="viennacl::linalg::sub" ref="a707ace72b7ff8ad1e3a9ff2606567f1e" args="(const viennacl::matrix< TYPE, F, ALIGNMENT > &mat1, const viennacl::matrix< TYPE, F, ALIGNMENT > &mat2, viennacl::matrix< TYPE, F, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::sub </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< TYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Adds two dense matrices and writes the result to a third matrix. </p>
-<p>This is the implementation of the convenience expression result = mat1 + mat2;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat1</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>mat2</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The resulting matrix </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="aad5f201a0e90a230b4376deb311c019a"></a><!-- doxytag: member="viennacl::linalg::sub" ref="aad5f201a0e90a230b4376deb311c019a" args="(const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec1, const viennacl::vector< SCALARTYPE, ALIGNMENT > &vec2, viennacl::vector< SCALARTYPE, ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::sub </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec1</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>vec2</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. </p>
-<p>result = vec1 - vec2</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>vec1</em> </td><td>The first operand. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec2</em> </td><td>The second operand. </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector. </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<a class="anchor" id="a0c03a1482aebb921ce45f3b1c933697c"></a><!-- doxytag: member="viennacl::linalg::trans_prod_impl" ref="a0c03a1482aebb921ce45f3b1c933697c" args="(const matrix< SCALARTYPE, F, ALIGNMENT > &mat, const viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &vec, viennacl::vector< SCALARTYPE, VECTOR_ALIGNMENT > &result)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::linalg::trans_prod_impl </td>
- <td>(</td>
- <td class="paramtype">const matrix< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, VECTOR_ALIGNMENT > & </td>
- <td class="paramname"> <em>result</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Carries out matrix-vector multiplication with a transposed matrix. </p>
-<p>Implementation of the convenience expression result = trans(mat) * vec;</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>mat</em> </td><td>The matrix </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>vec</em> </td><td>The vector </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>The result vector </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1linalg_1_1kernels.html b/doc/doxygen/html/namespaceviennacl_1_1linalg_1_1kernels.html
deleted file mode 100644
index af79e52..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1linalg_1_1kernels.html
+++ /dev/null
@@ -1,3072 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::linalg::kernels Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>viennacl::linalg::kernels Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> = "} \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> = "}\n"</td></tr>
-</table>
-<hr/><h2>Variable Documentation</h2>
-<a class="anchor" id="aa605535644b66099af40366034aec68a"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_bicgstab_kernel1" ref="aa605535644b66099af40366034aec68a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa605535644b66099af40366034aec68a">compressed_matrix_align1_bicgstab_kernel1</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac03d5f5ef2dba4ae1f2b8a706e140922"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_bicgstab_kernel2" ref="ac03d5f5ef2dba4ae1f2b8a706e140922" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac03d5f5ef2dba4ae1f2b8a706e140922">compressed_matrix_align1_bicgstab_kernel2</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa81fb0d854c43d0d9c1bc0a7521ca5c1"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_jacobi_precond" ref="aa81fb0d854c43d0d9c1bc0a7521ca5c1" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa81fb0d854c43d0d9c1bc0a7521ca5c1">compressed_matrix_align1_jacobi_precond</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aee85fa4c19f9fe4080ebc74772f0fb63"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_lu_backward" ref="aee85fa4c19f9fe4080ebc74772f0fb63" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee85fa4c19f9fe4080ebc74772f0fb63">compressed_matrix_align1_lu_backward</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa668f421d9c45d2a50487244892ffc10"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_lu_forward" ref="aa668f421d9c45d2a50487244892ffc10" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa668f421d9c45d2a50487244892ffc10">compressed_matrix_align1_lu_forward</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a732fbb508d61b038f2897655d865cabb"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_row_scaling_1" ref="a732fbb508d61b038f2897655d865cabb" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a732fbb508d61b038f2897655d865cabb">compressed_matrix_align1_row_scaling_1</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5b7892b0465dcc17131c783121985928"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_row_scaling_2" ref="a5b7892b0465dcc17131c783121985928" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5b7892b0465dcc17131c783121985928">compressed_matrix_align1_row_scaling_2</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a44ea6c4dbe1d8f9bd0950a848436c233"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align1_vec_mul" ref="a44ea6c4dbe1d8f9bd0950a848436c233" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a44ea6c4dbe1d8f9bd0950a848436c233">compressed_matrix_align1_vec_mul</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a70b53cb5e3546b4e5773ace39a51cf2b"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align4_vec_mul" ref="a70b53cb5e3546b4e5773ace39a51cf2b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70b53cb5e3546b4e5773ace39a51cf2b">compressed_matrix_align4_vec_mul</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa8f41f1024eabef84fa61cc5d4e64495"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix_align8_vec_mul" ref="aa8f41f1024eabef84fa61cc5d4e64495" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa8f41f1024eabef84fa61cc5d4e64495">compressed_matrix_align8_vec_mul</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a128ce5e93cd806340d6e7474387fd587"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix_align1_vec_mul" ref="a128ce5e93cd806340d6e7474387fd587" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a128ce5e93cd806340d6e7474387fd587">coordinate_matrix_align1_vec_mul</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abc32fc64ba2fdf28beebf5a20427c9ed"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_add" ref="abc32fc64ba2fdf28beebf5a20427c9ed" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc32fc64ba2fdf28beebf5a20427c9ed">matrix_col_align1_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a85c9e5e3c4c2763af50752197993d3e6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_clear" ref="a85c9e5e3c4c2763af50752197993d3e6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a85c9e5e3c4c2763af50752197993d3e6">matrix_col_align1_clear</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0cffa4758fb8aa833a36e8cbe14be042"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_cpu_inplace_mult" ref="a0cffa4758fb8aa833a36e8cbe14be042" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0cffa4758fb8aa833a36e8cbe14be042">matrix_col_align1_cpu_inplace_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9b42983f815fe9170b9aee53d1271589"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_add" ref="a9b42983f815fe9170b9aee53d1271589" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9b42983f815fe9170b9aee53d1271589">matrix_col_align1_inplace_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac6b5ae3eec50909abde8db957ac24871"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_divide" ref="ac6b5ae3eec50909abde8db957ac24871" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6b5ae3eec50909abde8db957ac24871">matrix_col_align1_inplace_divide</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a831accf5ccabe70e140c908d87a0ad2d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_mult" ref="a831accf5ccabe70e140c908d87a0ad2d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a831accf5ccabe70e140c908d87a0ad2d">matrix_col_align1_inplace_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a272967bc262b8e642e03396e1b8a88d2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_inplace_sub" ref="a272967bc262b8e642e03396e1b8a88d2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a272967bc262b8e642e03396e1b8a88d2">matrix_col_align1_inplace_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a19b109dba6b0c936b4cf1c59075cd827"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_lower_triangular_substitute_inplace" ref="a19b109dba6b0c936b4cf1c59075cd827" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a19b109dba6b0c936b4cf1c59075cd827">matrix_col_align1_lower_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="add04bbceec9601b852a3cbd4e845d966"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_lu_factorize" ref="add04bbceec9601b852a3cbd4e845d966" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add04bbceec9601b852a3cbd4e845d966">matrix_col_align1_lu_factorize</a> = "} \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af2d13284328fd9999e571a1422985417"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_rank1_update" ref="af2d13284328fd9999e571a1422985417" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af2d13284328fd9999e571a1422985417">matrix_col_align1_rank1_update</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a61ae3e9434691a925745b8807ed746bc"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_scaled_rank1_update" ref="a61ae3e9434691a925745b8807ed746bc" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a61ae3e9434691a925745b8807ed746bc">matrix_col_align1_scaled_rank1_update</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeeeb462b2236e27387339112ba1b11d8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_sub" ref="aeeeb462b2236e27387339112ba1b11d8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeeeb462b2236e27387339112ba1b11d8">matrix_col_align1_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad81f8128c317cabbe3dfacf18054b941"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_lower_triangular_substitute_inplace" ref="ad81f8128c317cabbe3dfacf18054b941" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad81f8128c317cabbe3dfacf18054b941">matrix_col_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2e318d7949345174ee4dd29ac9d7401f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_unit_lower_triangular_substitute_inplace" ref="a2e318d7949345174ee4dd29ac9d7401f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2e318d7949345174ee4dd29ac9d7401f">matrix_col_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a55703d5d1154f37d14b37d99b442e565"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_unit_upper_triangular_substitute_inplace" ref="a55703d5d1154f37d14b37d99b442e565" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a55703d5d1154f37d14b37d99b442e565">matrix_col_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb2177986450de09ebf76a9fe437e130"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_upper_triangular_substitute_inplace" ref="adb2177986450de09ebf76a9fe437e130" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adb2177986450de09ebf76a9fe437e130">matrix_col_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a721b05df26b4a65a9c908bdb3e1e8801"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_trans_vec_mul" ref="a721b05df26b4a65a9c908bdb3e1e8801" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a721b05df26b4a65a9c908bdb3e1e8801">matrix_col_align1_trans_vec_mul</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a035ffa8c1cc35fd5dbac6d69d0bf9791"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_unit_lower_triangular_substitute_inplace" ref="a035ffa8c1cc35fd5dbac6d69d0bf9791" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a035ffa8c1cc35fd5dbac6d69d0bf9791">matrix_col_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa681cea1f22d19e2f952c997a901ee13"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_unit_upper_triangular_substitute_inplace" ref="aa681cea1f22d19e2f952c997a901ee13" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa681cea1f22d19e2f952c997a901ee13">matrix_col_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6706e79115fb0911e8becf613db5daa8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_upper_triangular_substitute_inplace" ref="a6706e79115fb0911e8becf613db5daa8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6706e79115fb0911e8becf613db5daa8">matrix_col_align1_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8af3ab6d04d6103a874df11fcdb7736b"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col_align1_vec_mul" ref="a8af3ab6d04d6103a874df11fcdb7736b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8af3ab6d04d6103a874df11fcdb7736b">matrix_col_align1_vec_mul</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68426ab2928b1682cc1bcc918c609433"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_AA" ref="a68426ab2928b1682cc1bcc918c609433" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68426ab2928b1682cc1bcc918c609433">matrix_prod_col_col_col_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa3f399fe5b3f1c0b0a4e0c38610d36a5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_AT" ref="aa3f399fe5b3f1c0b0a4e0c38610d36a5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa3f399fe5b3f1c0b0a4e0c38610d36a5">matrix_prod_col_col_col_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa218d827af245e504d807322d0309952"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_TA" ref="aa218d827af245e504d807322d0309952" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa218d827af245e504d807322d0309952">matrix_prod_col_col_col_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a639d86008f91760556437be5befa8f9a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col_align1_prod_TT" ref="a639d86008f91760556437be5befa8f9a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a639d86008f91760556437be5befa8f9a">matrix_prod_col_col_col_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9c8668e32e7e8591c6a8ea2593079a82"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_AA" ref="a9c8668e32e7e8591c6a8ea2593079a82" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c8668e32e7e8591c6a8ea2593079a82">matrix_prod_col_col_row_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6c34f0a875293b1fb29d3c3a08a6adb9"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_AT" ref="a6c34f0a875293b1fb29d3c3a08a6adb9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6c34f0a875293b1fb29d3c3a08a6adb9">matrix_prod_col_col_row_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2f96a043e1f5fe8c83cc567b902aec97"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_TA" ref="a2f96a043e1f5fe8c83cc567b902aec97" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2f96a043e1f5fe8c83cc567b902aec97">matrix_prod_col_col_row_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac4a39da13117659b719f166fcd672e87"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row_align1_prod_TT" ref="ac4a39da13117659b719f166fcd672e87" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4a39da13117659b719f166fcd672e87">matrix_prod_col_col_row_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abbc9ba0dc9337a72a3383ffbe3ece2be"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_AA" ref="abbc9ba0dc9337a72a3383ffbe3ece2be" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abbc9ba0dc9337a72a3383ffbe3ece2be">matrix_prod_col_row_col_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab22a3b2118659fd89ee18b3184179b11"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_AT" ref="ab22a3b2118659fd89ee18b3184179b11" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab22a3b2118659fd89ee18b3184179b11">matrix_prod_col_row_col_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5edeccd546f0eadbb9571e630e021540"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_TA" ref="a5edeccd546f0eadbb9571e630e021540" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5edeccd546f0eadbb9571e630e021540">matrix_prod_col_row_col_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5f29013a551bc80e2f584ee0703b933a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col_align1_prod_TT" ref="a5f29013a551bc80e2f584ee0703b933a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5f29013a551bc80e2f584ee0703b933a">matrix_prod_col_row_col_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acea6f91a7bb64d20eabc17c5c933f13c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_AA" ref="acea6f91a7bb64d20eabc17c5c933f13c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acea6f91a7bb64d20eabc17c5c933f13c">matrix_prod_col_row_row_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adeec2e8218f612a6159c254c74bc1e28"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_AT" ref="adeec2e8218f612a6159c254c74bc1e28" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adeec2e8218f612a6159c254c74bc1e28">matrix_prod_col_row_row_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac362e21f087a297f5ef74064e1da5221"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_TA" ref="ac362e21f087a297f5ef74064e1da5221" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac362e21f087a297f5ef74064e1da5221">matrix_prod_col_row_row_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adf6226532e11f69706ce4e32176fa831"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row_align1_prod_TT" ref="adf6226532e11f69706ce4e32176fa831" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf6226532e11f69706ce4e32176fa831">matrix_prod_col_row_row_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a05a52bedf85128aac86d63b689c394ee"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_AA" ref="a05a52bedf85128aac86d63b689c394ee" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a05a52bedf85128aac86d63b689c394ee">matrix_prod_row_col_col_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe0b416c34cc02fa806e6d21bf7dc8b4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_AT" ref="abe0b416c34cc02fa806e6d21bf7dc8b4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe0b416c34cc02fa806e6d21bf7dc8b4">matrix_prod_row_col_col_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0589c4b9d87acb1bbf62cb43b27574a3"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_TA" ref="a0589c4b9d87acb1bbf62cb43b27574a3" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0589c4b9d87acb1bbf62cb43b27574a3">matrix_prod_row_col_col_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a428682a97692095740453532fe2906fb"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col_align1_prod_TT" ref="a428682a97692095740453532fe2906fb" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a428682a97692095740453532fe2906fb">matrix_prod_row_col_col_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af063c40a383e7665641216244ab87cfc"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_AA" ref="af063c40a383e7665641216244ab87cfc" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af063c40a383e7665641216244ab87cfc">matrix_prod_row_col_row_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1258e5ecb584104ba31dfd7a69ec144c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_AT" ref="a1258e5ecb584104ba31dfd7a69ec144c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1258e5ecb584104ba31dfd7a69ec144c">matrix_prod_row_col_row_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8b1e7141a8471fa43895c6ff5c98fef5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_TA" ref="a8b1e7141a8471fa43895c6ff5c98fef5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b1e7141a8471fa43895c6ff5c98fef5">matrix_prod_row_col_row_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a208747fb17bedb79efeee607bfd2726d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row_align1_prod_TT" ref="a208747fb17bedb79efeee607bfd2726d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a208747fb17bedb79efeee607bfd2726d">matrix_prod_row_col_row_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae35cf2f6668694cd241ec9ad2dc4ad36"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_AA" ref="ae35cf2f6668694cd241ec9ad2dc4ad36" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae35cf2f6668694cd241ec9ad2dc4ad36">matrix_prod_row_row_col_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6f1ab1cc0f9c3d83a0ae4af5e979f114"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_AT" ref="a6f1ab1cc0f9c3d83a0ae4af5e979f114" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6f1ab1cc0f9c3d83a0ae4af5e979f114">matrix_prod_row_row_col_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a754f78f2f489e8ca90baacbfe1e9b183"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_TA" ref="a754f78f2f489e8ca90baacbfe1e9b183" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a754f78f2f489e8ca90baacbfe1e9b183">matrix_prod_row_row_col_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeaacb34ad4d7af0748f20cb15d28fb90"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col_align1_prod_TT" ref="aeaacb34ad4d7af0748f20cb15d28fb90" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaacb34ad4d7af0748f20cb15d28fb90">matrix_prod_row_row_col_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a13669ba8de217f48f2a508f1370aa001"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_AA" ref="a13669ba8de217f48f2a508f1370aa001" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13669ba8de217f48f2a508f1370aa001">matrix_prod_row_row_row_align1_prod_AA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aee3c811dcc955ebe1e4ac0ee7c8623e4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_AT" ref="aee3c811dcc955ebe1e4ac0ee7c8623e4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee3c811dcc955ebe1e4ac0ee7c8623e4">matrix_prod_row_row_row_align1_prod_AT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a828550d7744ef6fc9e101ea86aeb90a7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_TA" ref="a828550d7744ef6fc9e101ea86aeb90a7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a828550d7744ef6fc9e101ea86aeb90a7">matrix_prod_row_row_row_align1_prod_TA</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ade104e7ca7236758ddee34aec77bf9ca"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row_align1_prod_TT" ref="ade104e7ca7236758ddee34aec77bf9ca" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ade104e7ca7236758ddee34aec77bf9ca">matrix_prod_row_row_row_align1_prod_TT</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a545c9b4b0a1792bf8d17993faff0b834"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_add" ref="a545c9b4b0a1792bf8d17993faff0b834" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545c9b4b0a1792bf8d17993faff0b834">matrix_row_align1_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af4c5cae8ac67261f3e2f7bbb691b8fb7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_clear" ref="af4c5cae8ac67261f3e2f7bbb691b8fb7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af4c5cae8ac67261f3e2f7bbb691b8fb7">matrix_row_align1_clear</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9844a2a540c973dca6fa8bbc5a803ba0"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_cpu_inplace_mult" ref="a9844a2a540c973dca6fa8bbc5a803ba0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9844a2a540c973dca6fa8bbc5a803ba0">matrix_row_align1_cpu_inplace_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf38bb9a1e7f9c3a9afd961da809077a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_add" ref="abf38bb9a1e7f9c3a9afd961da809077a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abf38bb9a1e7f9c3a9afd961da809077a">matrix_row_align1_inplace_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8b630332b2f19a4ee34c59a2aaad20a7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_divide" ref="a8b630332b2f19a4ee34c59a2aaad20a7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8b630332b2f19a4ee34c59a2aaad20a7">matrix_row_align1_inplace_divide</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa6af3f80ae32daf56bfd478bf976b5e8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_mult" ref="aa6af3f80ae32daf56bfd478bf976b5e8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6af3f80ae32daf56bfd478bf976b5e8">matrix_row_align1_inplace_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab02d2547b661f2569c81430d86560a8d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_inplace_sub" ref="ab02d2547b661f2569c81430d86560a8d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab02d2547b661f2569c81430d86560a8d">matrix_row_align1_inplace_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9c02c62c673821890e7d34a07bba5bd3"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_lower_triangular_substitute_inplace" ref="a9c02c62c673821890e7d34a07bba5bd3" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9c02c62c673821890e7d34a07bba5bd3">matrix_row_align1_lower_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="add7af88723cbcaf172eb7d9b3f5c9c65"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_lu_factorize" ref="add7af88723cbcaf172eb7d9b3f5c9c65" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#add7af88723cbcaf172eb7d9b3f5c9c65">matrix_row_align1_lu_factorize</a> = "} \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a92ce385a3b329c0f6c21ef5be713a679"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_rank1_update" ref="a92ce385a3b329c0f6c21ef5be713a679" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92ce385a3b329c0f6c21ef5be713a679">matrix_row_align1_rank1_update</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af0cd080d9c0257143a74594cc4516cff"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_scaled_rank1_update" ref="af0cd080d9c0257143a74594cc4516cff" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af0cd080d9c0257143a74594cc4516cff">matrix_row_align1_scaled_rank1_update</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a70f2f793567bfb49d178c092ccd75289"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_sub" ref="a70f2f793567bfb49d178c092ccd75289" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a70f2f793567bfb49d178c092ccd75289">matrix_row_align1_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a03be4a2b5d6746dd924285ed8ca7e180"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_lower_triangular_substitute_inplace" ref="a03be4a2b5d6746dd924285ed8ca7e180" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a03be4a2b5d6746dd924285ed8ca7e180">matrix_row_align1_trans_lower_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab0631f1611fd61d5993e9445f89843b5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_unit_lower_triangular_substitute_inplace" ref="ab0631f1611fd61d5993e9445f89843b5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab0631f1611fd61d5993e9445f89843b5">matrix_row_align1_trans_unit_lower_triangular_substitute_inplace</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1e0da55efc3209ef859f7e368f00f6c6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_unit_upper_triangular_substitute_inplace" ref="a1e0da55efc3209ef859f7e368f00f6c6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1e0da55efc3209ef859f7e368f00f6c6">matrix_row_align1_trans_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21bb76ea083d7d7972f54892c16d1c08"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_upper_triangular_substitute_inplace" ref="a21bb76ea083d7d7972f54892c16d1c08" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21bb76ea083d7d7972f54892c16d1c08">matrix_row_align1_trans_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="acc0ae3e1f88715166e472f31302d6784"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_trans_vec_mul" ref="acc0ae3e1f88715166e472f31302d6784" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#acc0ae3e1f88715166e472f31302d6784">matrix_row_align1_trans_vec_mul</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2aae74fb1c98fcc28c329a805437619f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_unit_lower_triangular_substitute_inplace" ref="a2aae74fb1c98fcc28c329a805437619f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aae74fb1c98fcc28c329a805437619f">matrix_row_align1_unit_lower_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a526973004121a16dac507fd871935201"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_unit_upper_triangular_substitute_inplace" ref="a526973004121a16dac507fd871935201" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a526973004121a16dac507fd871935201">matrix_row_align1_unit_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac5efbd05ad8968329503444482095868"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_upper_triangular_substitute_inplace" ref="ac5efbd05ad8968329503444482095868" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac5efbd05ad8968329503444482095868">matrix_row_align1_upper_triangular_substitute_inplace</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a900360eed3f23ed931015825b244391c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row_align1_vec_mul" ref="a900360eed3f23ed931015825b244391c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a900360eed3f23ed931015825b244391c">matrix_row_align1_vec_mul</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2d534a514f612444c450eb25a0129fa4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_lower_solve" ref="a2d534a514f612444c450eb25a0129fa4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2d534a514f612444c450eb25a0129fa4">matrix_solve_col_col_align1_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a24cb6ebf6945502f771c6a07f4e3cdf2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_lower_trans_solve" ref="a24cb6ebf6945502f771c6a07f4e3cdf2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a24cb6ebf6945502f771c6a07f4e3cdf2">matrix_solve_col_col_align1_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab6f8b74ad2a6512511407ba5eb70ee4a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_lower_solve" ref="ab6f8b74ad2a6512511407ba5eb70ee4a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab6f8b74ad2a6512511407ba5eb70ee4a">matrix_solve_col_col_align1_trans_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a54ef2ad621025251c4c8fd996e978caf"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_lower_trans_solve" ref="a54ef2ad621025251c4c8fd996e978caf" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a54ef2ad621025251c4c8fd996e978caf">matrix_solve_col_col_align1_trans_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a77380857aa1d0b3e8c0cdd6f28041ff5"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_lower_solve" ref="a77380857aa1d0b3e8c0cdd6f28041ff5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a77380857aa1d0b3e8c0cdd6f28041ff5">matrix_solve_col_col_align1_trans_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adc6d6038c9bd1ebc9f001b736ae2646a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_lower_trans_solve" ref="adc6d6038c9bd1ebc9f001b736ae2646a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adc6d6038c9bd1ebc9f001b736ae2646a">matrix_solve_col_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa6a36a4ca6b514a505965840b3aeaec7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_upper_solve" ref="aa6a36a4ca6b514a505965840b3aeaec7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa6a36a4ca6b514a505965840b3aeaec7">matrix_solve_col_col_align1_trans_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a021ea598a05b988ec2b5549bbccd1d73"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_unit_upper_trans_solve" ref="a021ea598a05b988ec2b5549bbccd1d73" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a021ea598a05b988ec2b5549bbccd1d73">matrix_solve_col_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a939ebfef898dabb2c4d3110ead340aca"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_upper_solve" ref="a939ebfef898dabb2c4d3110ead340aca" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a939ebfef898dabb2c4d3110ead340aca">matrix_solve_col_col_align1_trans_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa41b51df8a76b94a80e342400bbcffe6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_trans_upper_trans_solve" ref="aa41b51df8a76b94a80e342400bbcffe6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa41b51df8a76b94a80e342400bbcffe6">matrix_solve_col_col_align1_trans_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa54e13ad8aad9054b988fff5cb164a66"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_lower_solve" ref="aa54e13ad8aad9054b988fff5cb164a66" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa54e13ad8aad9054b988fff5cb164a66">matrix_solve_col_col_align1_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3bb55aaa8905e7c0e65a6bfed22e74ca"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_lower_trans_solve" ref="a3bb55aaa8905e7c0e65a6bfed22e74ca" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3bb55aaa8905e7c0e65a6bfed22e74ca">matrix_solve_col_col_align1_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac49993d1c530fa2b974339e512b1f0ea"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_upper_solve" ref="ac49993d1c530fa2b974339e512b1f0ea" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac49993d1c530fa2b974339e512b1f0ea">matrix_solve_col_col_align1_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1f8316e87fc5d8b3b7a8489d2739967b"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_unit_upper_trans_solve" ref="a1f8316e87fc5d8b3b7a8489d2739967b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1f8316e87fc5d8b3b7a8489d2739967b">matrix_solve_col_col_align1_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af1baac9a82e22ae9e1ecfb2d1f8815b8"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_upper_solve" ref="af1baac9a82e22ae9e1ecfb2d1f8815b8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af1baac9a82e22ae9e1ecfb2d1f8815b8">matrix_solve_col_col_align1_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad3dd9852595ba666caf92a08117bf966"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col_align1_upper_trans_solve" ref="ad3dd9852595ba666caf92a08117bf966" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad3dd9852595ba666caf92a08117bf966">matrix_solve_col_col_align1_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a78215c22983649f9f24373d721f54c95"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_lower_solve" ref="a78215c22983649f9f24373d721f54c95" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78215c22983649f9f24373d721f54c95">matrix_solve_col_row_align1_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abff28284726ec1004425868639ad4e26"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_lower_trans_solve" ref="abff28284726ec1004425868639ad4e26" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abff28284726ec1004425868639ad4e26">matrix_solve_col_row_align1_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae126f58592e9b3c20662326d1796889c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_lower_solve" ref="ae126f58592e9b3c20662326d1796889c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae126f58592e9b3c20662326d1796889c">matrix_solve_col_row_align1_trans_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a31bfee98b555b09302cbbb4a27172c94"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_lower_trans_solve" ref="a31bfee98b555b09302cbbb4a27172c94" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a31bfee98b555b09302cbbb4a27172c94">matrix_solve_col_row_align1_trans_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aff367cbba8fcd26e25c91fb6f412f8d4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_lower_solve" ref="aff367cbba8fcd26e25c91fb6f412f8d4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aff367cbba8fcd26e25c91fb6f412f8d4">matrix_solve_col_row_align1_trans_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac6ae5b209658e8555ed5d6bda72a3ed4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_lower_trans_solve" ref="ac6ae5b209658e8555ed5d6bda72a3ed4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6ae5b209658e8555ed5d6bda72a3ed4">matrix_solve_col_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a270193ce008b0aa64d42676d59861086"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_upper_solve" ref="a270193ce008b0aa64d42676d59861086" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a270193ce008b0aa64d42676d59861086">matrix_solve_col_row_align1_trans_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a955f39b5ca5ed074c0990692c46764bc"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_unit_upper_trans_solve" ref="a955f39b5ca5ed074c0990692c46764bc" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a955f39b5ca5ed074c0990692c46764bc">matrix_solve_col_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac145c2e398511a142a753224f8e8690a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_upper_solve" ref="ac145c2e398511a142a753224f8e8690a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac145c2e398511a142a753224f8e8690a">matrix_solve_col_row_align1_trans_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae104558e06b30b8f770a3be0760ca082"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_trans_upper_trans_solve" ref="ae104558e06b30b8f770a3be0760ca082" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae104558e06b30b8f770a3be0760ca082">matrix_solve_col_row_align1_trans_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac4e307cd17f3b4e0d16e95e04055fd1c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_lower_solve" ref="ac4e307cd17f3b4e0d16e95e04055fd1c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac4e307cd17f3b4e0d16e95e04055fd1c">matrix_solve_col_row_align1_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a43ffee3be9fbc0fdc8a754a94f22d1f2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_lower_trans_solve" ref="a43ffee3be9fbc0fdc8a754a94f22d1f2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a43ffee3be9fbc0fdc8a754a94f22d1f2">matrix_solve_col_row_align1_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adcee8b4b8ca0806c20c0e8972c6f8142"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_upper_solve" ref="adcee8b4b8ca0806c20c0e8972c6f8142" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adcee8b4b8ca0806c20c0e8972c6f8142">matrix_solve_col_row_align1_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af63c83173f7e908340cd294bbba5d852"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_unit_upper_trans_solve" ref="af63c83173f7e908340cd294bbba5d852" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af63c83173f7e908340cd294bbba5d852">matrix_solve_col_row_align1_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7c50ca9770f02570a11b71b44360b49c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_upper_solve" ref="a7c50ca9770f02570a11b71b44360b49c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7c50ca9770f02570a11b71b44360b49c">matrix_solve_col_row_align1_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af8589ed3b507fabd4aad0112dc732a69"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row_align1_upper_trans_solve" ref="af8589ed3b507fabd4aad0112dc732a69" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8589ed3b507fabd4aad0112dc732a69">matrix_solve_col_row_align1_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aee7bc4916a411220ef52c763b4be4c94"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_lower_solve" ref="aee7bc4916a411220ef52c763b4be4c94" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aee7bc4916a411220ef52c763b4be4c94">matrix_solve_row_col_align1_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad697c4de0f85cd8debd310b73334b931"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_lower_trans_solve" ref="ad697c4de0f85cd8debd310b73334b931" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad697c4de0f85cd8debd310b73334b931">matrix_solve_row_col_align1_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1644009ec774ac3af40dedca25f02b43"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_lower_solve" ref="a1644009ec774ac3af40dedca25f02b43" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1644009ec774ac3af40dedca25f02b43">matrix_solve_row_col_align1_trans_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a07e3d67b289b94145eca4d9ea4edc079"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_lower_trans_solve" ref="a07e3d67b289b94145eca4d9ea4edc079" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a07e3d67b289b94145eca4d9ea4edc079">matrix_solve_row_col_align1_trans_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adac154dadad82ab2c12cae9f84ef1df7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_lower_solve" ref="adac154dadad82ab2c12cae9f84ef1df7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adac154dadad82ab2c12cae9f84ef1df7">matrix_solve_row_col_align1_trans_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac1ebfab7f817353979201a6ecc05279c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_lower_trans_solve" ref="ac1ebfab7f817353979201a6ecc05279c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac1ebfab7f817353979201a6ecc05279c">matrix_solve_row_col_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abcbe77e90a855b1915a02a5b09e97633"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_upper_solve" ref="abcbe77e90a855b1915a02a5b09e97633" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abcbe77e90a855b1915a02a5b09e97633">matrix_solve_row_col_align1_trans_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe735648f8f4c96a072aa60b8a637210"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_unit_upper_trans_solve" ref="abe735648f8f4c96a072aa60b8a637210" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe735648f8f4c96a072aa60b8a637210">matrix_solve_row_col_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a758abc7996e0a07039a93dcaee77c6b2"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_upper_solve" ref="a758abc7996e0a07039a93dcaee77c6b2" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a758abc7996e0a07039a93dcaee77c6b2">matrix_solve_row_col_align1_trans_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af789c406c430d05d122fd850b85d00d1"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_trans_upper_trans_solve" ref="af789c406c430d05d122fd850b85d00d1" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af789c406c430d05d122fd850b85d00d1">matrix_solve_row_col_align1_trans_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a3ee6f476aa9b7cb1b623ae9a41da8854"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_lower_solve" ref="a3ee6f476aa9b7cb1b623ae9a41da8854" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a3ee6f476aa9b7cb1b623ae9a41da8854">matrix_solve_row_col_align1_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab7f23601bc8a0818e7745c27bf0186b0"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_lower_trans_solve" ref="ab7f23601bc8a0818e7745c27bf0186b0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab7f23601bc8a0818e7745c27bf0186b0">matrix_solve_row_col_align1_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aeaa2c124938d8f8a11318dcfca6cffb7"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_upper_solve" ref="aeaa2c124938d8f8a11318dcfca6cffb7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aeaa2c124938d8f8a11318dcfca6cffb7">matrix_solve_row_col_align1_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9aee54f5b4a250b6ad2e9d665397de21"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_unit_upper_trans_solve" ref="a9aee54f5b4a250b6ad2e9d665397de21" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9aee54f5b4a250b6ad2e9d665397de21">matrix_solve_row_col_align1_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe51b8d1833765a52b6830c6da84ea8a"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_upper_solve" ref="abe51b8d1833765a52b6830c6da84ea8a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe51b8d1833765a52b6830c6da84ea8a">matrix_solve_row_col_align1_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21c6ee6e93c7c8b1fa19a410b6b10b4c"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col_align1_upper_trans_solve" ref="a21c6ee6e93c7c8b1fa19a410b6b10b4c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21c6ee6e93c7c8b1fa19a410b6b10b4c">matrix_solve_row_col_align1_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a47a55c22319a627f4ddfaadc8a3bc395"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_lower_solve" ref="a47a55c22319a627f4ddfaadc8a3bc395" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a47a55c22319a627f4ddfaadc8a3bc395">matrix_solve_row_row_align1_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af8347360e2f78d49462a13e20336e6b4"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_lower_trans_solve" ref="af8347360e2f78d49462a13e20336e6b4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#af8347360e2f78d49462a13e20336e6b4">matrix_solve_row_row_align1_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1a71ccad145753382293e7c41ff4d91f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_lower_solve" ref="a1a71ccad145753382293e7c41ff4d91f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1a71ccad145753382293e7c41ff4d91f">matrix_solve_row_row_align1_trans_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a21487c859248981569c22730431fe355"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_lower_trans_solve" ref="a21487c859248981569c22730431fe355" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a21487c859248981569c22730431fe355">matrix_solve_row_row_align1_trans_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a162269e10b910565c04bfc943574b347"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_lower_solve" ref="a162269e10b910565c04bfc943574b347" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a162269e10b910565c04bfc943574b347">matrix_solve_row_row_align1_trans_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1688b5cdd2b3e827d05b5ff9177824f0"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_lower_trans_solve" ref="a1688b5cdd2b3e827d05b5ff9177824f0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1688b5cdd2b3e827d05b5ff9177824f0">matrix_solve_row_row_align1_trans_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a204b1f86b6445fa50f0b9d2ece6d462f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_upper_solve" ref="a204b1f86b6445fa50f0b9d2ece6d462f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a204b1f86b6445fa50f0b9d2ece6d462f">matrix_solve_row_row_align1_trans_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4bf66ae99d8acfd8246dbbdf6f060023"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_unit_upper_trans_solve" ref="a4bf66ae99d8acfd8246dbbdf6f060023" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4bf66ae99d8acfd8246dbbdf6f060023">matrix_solve_row_row_align1_trans_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7296a554e65162624570e075ddb88608"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_upper_solve" ref="a7296a554e65162624570e075ddb88608" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7296a554e65162624570e075ddb88608">matrix_solve_row_row_align1_trans_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a75d1c561429a2bf470e6f25d71edb1c6"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_trans_upper_trans_solve" ref="a75d1c561429a2bf470e6f25d71edb1c6" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a75d1c561429a2bf470e6f25d71edb1c6">matrix_solve_row_row_align1_trans_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4010f8c4fb55c98c060c7c586290980f"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_lower_solve" ref="a4010f8c4fb55c98c060c7c586290980f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4010f8c4fb55c98c060c7c586290980f">matrix_solve_row_row_align1_unit_lower_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a89fa78cffd6743b141c5e407854de6e9"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_lower_trans_solve" ref="a89fa78cffd6743b141c5e407854de6e9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a89fa78cffd6743b141c5e407854de6e9">matrix_solve_row_row_align1_unit_lower_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac977da2329673fb4679835c950a3f202"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_upper_solve" ref="ac977da2329673fb4679835c950a3f202" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac977da2329673fb4679835c950a3f202">matrix_solve_row_row_align1_unit_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac7de6b0ee7cc7c54a25a4d001ffbbd9d"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_unit_upper_trans_solve" ref="ac7de6b0ee7cc7c54a25a4d001ffbbd9d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac7de6b0ee7cc7c54a25a4d001ffbbd9d">matrix_solve_row_row_align1_unit_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a09fd9cd01e7cafcdc73fd83bb56fba72"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_upper_solve" ref="a09fd9cd01e7cafcdc73fd83bb56fba72" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a09fd9cd01e7cafcdc73fd83bb56fba72">matrix_solve_row_row_align1_upper_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7d7299379c1d9ebaef57a9aab3f5ff01"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row_align1_upper_trans_solve" ref="a7d7299379c1d9ebaef57a9aab3f5ff01" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7d7299379c1d9ebaef57a9aab3f5ff01">matrix_solve_row_row_align1_upper_trans_solve</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4134dce422026940aece28e05f122d7a"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_add" ref="a4134dce422026940aece28e05f122d7a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad39daaa59a1ce4c7e8179b039f15ab88"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_add" ref="ad39daaa59a1ce4c7e8179b039f15ab88" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7b6cb3a8d98a1716a72eb015bac6da73"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_div" ref="a7b6cb3a8d98a1716a72eb015bac6da73" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a58a8800fd41c5321dcce73e4308f2aef"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_add" ref="a58a8800fd41c5321dcce73e4308f2aef" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afdd42ae544513230e5fb3f3da1cc8dd1"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_div" ref="afdd42ae544513230e5fb3f3da1cc8dd1" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8402d8e4dc09b0b2595f5d7ffd8257a8"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_mul" ref="a8402d8e4dc09b0b2595f5d7ffd8257a8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5bf7e01714c3930370d605a6d232c2b9"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_inplace_sub" ref="a5bf7e01714c3930370d605a6d232c2b9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa5bda88a240ae932a07409a974af4532"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_mul" ref="aa5bda88a240ae932a07409a974af4532" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0bad690dfcab5f50859def44e42ddd91"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_cpu_sub" ref="a0bad690dfcab5f50859def44e42ddd91" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac0d464f4ce3e0ad1d271a7de50a229ae"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_divide" ref="ac0d464f4ce3e0ad1d271a7de50a229ae" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a545f737c0552ff312a01b072097f92eb"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_add" ref="a545f737c0552ff312a01b072097f92eb" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a99b5afe289c44e60b7e8b66fdff216f0"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_div" ref="a99b5afe289c44e60b7e8b66fdff216f0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a596ae1eef52cc8e6ed6e68b9868cf8ed"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_mul" ref="a596ae1eef52cc8e6ed6e68b9868cf8ed" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad4a92b9ae96ae6cb112fe4ead6e1c2b4"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_inplace_sub" ref="ad4a92b9ae96ae6cb112fe4ead6e1c2b4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab8e34ee4c364b0221730c266219f8557"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_mul" ref="ab8e34ee4c364b0221730c266219f8557" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a7a813e983f09a4427d218a680274a054"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar_align1_sub" ref="a7a813e983f09a4427d218a680274a054" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aac17cc82a82c3995db312f66af135cdd"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_add" ref="aac17cc82a82c3995db312f66af135cdd" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a856ca9e5a1b846cf568a00bf382dd17c"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_cpu_inplace_mul" ref="a856ca9e5a1b846cf568a00bf382dd17c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a871165366e49272cadf5577a72727adb"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_cpu_mult" ref="a871165366e49272cadf5577a72727adb" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aade9b99bbe8d0e90a0c4a085e5b2134f"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_divide" ref="aade9b99bbe8d0e90a0c4a085e5b2134f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68974b111e7fea103a47da8bc394e027"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_add" ref="a68974b111e7fea103a47da8bc394e027" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a36871c851eca44d6c80f48a75b26c9a1"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_divide" ref="a36871c851eca44d6c80f48a75b26c9a1" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a409c99f8f615c4c0c46492c0ac23fca9"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_mult" ref="a409c99f8f615c4c0c46492c0ac23fca9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2aa4d7333e4a406ce54bb08626cd0d0c"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_inplace_sub" ref="a2aa4d7333e4a406ce54bb08626cd0d0c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a13d8a0dd51329a0a01306b83427d2bf1"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_mult" ref="a13d8a0dd51329a0a01306b83427d2bf1" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a558efc15c32913225f8782d17e4bd263"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align16_sub" ref="a558efc15c32913225f8782d17e4bd263" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a4644450b5bed0354a30e7f26a500aa44"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_add" ref="a4644450b5bed0354a30e7f26a500aa44" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a96d4c1b730f29d791b6d37cfad6e0e2e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_clear" ref="a96d4c1b730f29d791b6d37cfad6e0e2e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6e5d349435efcbcec62e2811ff1402a9"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_inplace_mul_add" ref="a6e5d349435efcbcec62e2811ff1402a9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aceecbcde1257bb801edcba170eefaefe"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_inplace_mult" ref="aceecbcde1257bb801edcba170eefaefe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a907caa29f143941388d80c970cf85861"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_mul_add" ref="a907caa29f143941388d80c970cf85861" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a12809202c5e7df94fe3a314c4d414e2b"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_cpu_mult" ref="a12809202c5e7df94fe3a314c4d414e2b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6009338719ce296eabc91af4761c3163"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_diag_precond" ref="a6009338719ce296eabc91af4761c3163" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0e37957e1e7b56029efd6fef22e8065e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_divide" ref="a0e37957e1e7b56029efd6fef22e8065e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a82b1498269a9022b247d6ac60a2116e0"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_index_norm_inf" ref="a82b1498269a9022b247d6ac60a2116e0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a964b4612e0b77e8925335b1b784cd5c4"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inner_prod" ref="a964b4612e0b77e8925335b1b784cd5c4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a0752b6f86b225eb7d6e326ebfb979773"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_add" ref="a0752b6f86b225eb7d6e326ebfb979773" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a9e25c2ae7680939cab4868a9c29cb6dd"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_div_add" ref="a9e25c2ae7680939cab4868a9c29cb6dd" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac2585e94f467a8703c774142cca17e54"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_div_sub" ref="ac2585e94f467a8703c774142cca17e54" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a87bd810e4986cf9f65bc98741329fa2a"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_divide" ref="a87bd810e4986cf9f65bc98741329fa2a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aea72487f3fa81f2fa16cd5b2e77499ed"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_mul_add" ref="aea72487f3fa81f2fa16cd5b2e77499ed" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a68c670ee8d4918f6773e7b5ef4b10f5c"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_mul_sub" ref="a68c670ee8d4918f6773e7b5ef4b10f5c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a032468ecb3b8a8977ab25dc308174a17"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_mult" ref="a032468ecb3b8a8977ab25dc308174a17" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8be10b47607e0aba6f1528969eadb613"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_inplace_sub" ref="a8be10b47607e0aba6f1528969eadb613" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a74dd6c45922bdc18ee431054e4ef0d2e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_mul_add" ref="a74dd6c45922bdc18ee431054e4ef0d2e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adf7719cde9099c9e7f4871e4c168ed7a"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_mul_sub" ref="adf7719cde9099c9e7f4871e4c168ed7a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad2c633faeaf02b8e8eb4eaae13e57c15"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_mult" ref="ad2c633faeaf02b8e8eb4eaae13e57c15" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5d63eb770f765f00d7844b2f062b6e53"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_norm_1" ref="a5d63eb770f765f00d7844b2f062b6e53" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae2e937dcf380e0157a213390426e5865"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_norm_2" ref="ae2e937dcf380e0157a213390426e5865" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> = "\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac6f96be4155b23916953807f3b2d9a6b"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_norm_inf" ref="ac6f96be4155b23916953807f3b2d9a6b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac71cca04d5546ec4f05ea90c01e188e5"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_plane_rotation" ref="ac71cca04d5546ec4f05ea90c01e188e5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a67009d4a18e1d46aadf9929826711048"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_sqrt_sum" ref="a67009d4a18e1d46aadf9929826711048" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aae25f12f886fb6b36885ff389f68ed23"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_sub" ref="aae25f12f886fb6b36885ff389f68ed23" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa1a2b931b02afb528ae5aef33087f555"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_sum" ref="aa1a2b931b02afb528ae5aef33087f555" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a1d7a3c17099d6663f53ee9fec8712051"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_swap" ref="a1d7a3c17099d6663f53ee9fec8712051" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> = " \n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a92c69656763ed08bcbdcd1d035b4d7f0"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align1_vmax" ref="a92c69656763ed08bcbdcd1d035b4d7f0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abd9091b11b3540ffbf5255ae48bb88c5"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_cpu_inplace_mul_add" ref="abd9091b11b3540ffbf5255ae48bb88c5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2c8531be2d8faaeaa5792b8d9abbe47a"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_cpu_mul_add" ref="a2c8531be2d8faaeaa5792b8d9abbe47a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a32c5e56374f5fb07243905bc98192ed8"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_div_add" ref="a32c5e56374f5fb07243905bc98192ed8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a78dc391cab58d160dd73e4c400e02c7e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_div_sub" ref="a78dc391cab58d160dd73e4c400e02c7e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abc3c71bf976f8fe2db2bff85801db645"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_mul_add" ref="abc3c71bf976f8fe2db2bff85801db645" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a063ef5b8264defb1b8294a8b2e0f0e0e"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_inplace_mul_sub" ref="a063ef5b8264defb1b8294a8b2e0f0e0e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abe251ca4405801494141c923d47d3141"></a><!-- doxytag: member="viennacl::linalg::kernels::vector_align4_mul_add" ref="abe251ca4405801494141c923d47d3141" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">const char* const <a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> = "}\n"</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1ocl.html b/doc/doxygen/html/namespaceviennacl_1_1ocl.html
deleted file mode 100644
index bdb1fad..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1ocl.html
+++ /dev/null
@@ -1,703 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::ocl Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>viennacl::ocl Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1backend.html">backend</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A backend that provides contexts for ViennaCL objects (vector, matrix, etc.). <a href="classviennacl_1_1ocl_1_1backend.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">command_queue</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a command queue. <a href="classviennacl_1_1ocl_1_1command__queue.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1context.html">context</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device.html">device</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing a compute device (e.g. a GPU). <a href="classviennacl_1_1ocl_1_1device.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__found.html">device_not_found</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1device__not__available.html">device_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1compiler__not__available.html">compiler_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__object__allocation__failure.html">mem_object_allocation_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__resources.html">out_of_resources</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1out__of__host__memory.html">out_of_host_memory</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1profiling__info__not__available.html">profiling_info_not_available</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1mem__copy__overlap.html">mem_copy_overlap</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__mismatch.html">image_format_mismatch</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1image__format__not__supported.html">image_format_not_supported</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1build__program__failure.html">build_program_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1map__failure.html">map_failure</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__value.html">invalid_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device__type.html">invalid_device_type</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__platform.html">invalid_platform</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__device.html">invalid_device</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__context.html">invalid_context</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__queue__properties.html">invalid_queue_properties</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__command__queue.html">invalid_command_queue</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__host__ptr.html">invalid_host_ptr</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mem__object.html">invalid_mem_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__format__descriptor.html">invalid_image_format_descriptor</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__image__size.html">invalid_image_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__sampler.html">invalid_sampler</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__binary.html">invalid_binary</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__build__options.html">invalid_build_options</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program.html">invalid_program</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__program__executable.html">invalid_program_executable</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__name.html">invalid_kernel_name</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__definition.html">invalid_kernel_definition</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel.html">invalid_kernel</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__index.html">invalid_arg_index</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__value.html">invalid_arg_value</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__arg__size.html">invalid_arg_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__kernel__args.html">invalid_kernel_args</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__dimension.html">invalid_work_dimension</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__group__size.html">invalid_work_group_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__work__item__size.html">invalid_work_item_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__offset.html">invalid_global_offset</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event__wait__list.html">invalid_event_wait_list</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__event.html">invalid_event</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__operation.html">invalid_operation</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__gl__object.html">invalid_gl_object</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__buffer__size.html">invalid_buffer_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__mip__level.html">invalid_mip_level</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__global__work__size.html">invalid_global_work_size</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1invalid__property.html">invalid_property</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1unknown__error.html">unknown_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An error reporting class. Template argument is used to avoid problems with external linkage. <a href="structviennacl_1_1ocl_1_1error__checker.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html">handle_inc_dec_helper</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Helper for OpenCL reference counting used by class handle. <a href="classviennacl_1_1ocl_1_1handle__inc__dec__helper.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1handle.html">handle</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Handle class the effectively represents a smart pointer for OpenCL handles. <a href="classviennacl_1_1ocl_1_1handle.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">kernel</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Represents an OpenCL kernel within ViennaCL. <a href="classviennacl_1_1ocl_1_1kernel.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1local__mem.html">local_mem</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A class representing local (shared) OpenCL memory. Typically used as kernel argument. <a href="classviennacl_1_1ocl_1_1local__mem.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown. <a href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the current context. <a href="#a0c2a174533a0aca403ff7c4aa802edcf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#acc1a7460a9ff237b7c0306c32c3d34c6">switch_context</a> (long i)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the current context. <a href="#acc1a7460a9ff237b7c0306c32c3d34c6"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#add1725d48cfd159ce187e287369d1cdb">setup_context</a> (long i, std::vector< cl_device_id > const &devices)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting devices for a context. <a href="#add1725d48cfd159ce187e287369d1cdb"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a643e413cdc3e3d682c8ae0c6f0a83e0a">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context. <a href="#a643e413cdc3e3d682c8ae0c6f0a83e0a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae5ebc6a53d1c2ac134b5d955c61ad9e">setup_context</a> (long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queues)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context. <a href="#aae5ebc6a53d1c2ac134b5d955c61ad9e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a4ee09e7150e7158ac0e2fbfe21740138">setup_context</a> (long i, cl_context c, cl_device_id d, cl_command_queue q)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting up a context in ViennaCL from an existing OpenCL context. <a href="#a4ee09e7150e7158ac0e2fbfe21740138"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a11349d9bbd1691595c6ac23d03b294fd">set_context_device_type</a> (long i, cl_device_type dev_type)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context. <a href="#a11349d9bbd1691595c6ac23d03b294fd"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0bda50e7a1d1ce32d0eb999bcf40ff65">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to GPUs. <a href="#a0bda50e7a1d1ce32d0eb999bcf40ff65"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aae6d53d33250af634366a082eb389e1e">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to CPUs. <a href="#aae6d53d33250af634366a082eb389e1e"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aa55ca72f1d88e6366d9d7555d5fd3e3c">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to the default OpenCL device type. <a href="#aa55ca72f1d88e6366d9d7555d5fd3e3c"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a8eb7b871db32c1425afe547854885e83">set_context_device_type</a> (long i, <a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a>)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for setting the default device type for a context to accelerators. <a href="#a8eb7b871db32c1425afe547854885e83"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a">get_queue</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the default queue for the currently active device in the active context. <a href="#ac7871671987d322a8766aea79b1cd17a"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a053c7351f8606ff49117e251683a77b4">get_queue</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> d, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context. <a href="#a053c7351f8606ff49117e251683a77b4"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#aaa732391e632ec192953cc997fa269df">get_queue</a> (cl_device_id dev_id, unsigned int queue_id=0)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the queue for a particular device in the current active context. <a href="#aaa732391e632ec192953cc997fa269df"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f">get_kernel</a> (std::string const &prog_name, std::string const &kernel_name)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for getting the kernel for a particular program from the current active context. <a href="#a61a73653d92f1eb2ef9c649ec253e29f"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ac8bcead4c47a372eef33d7d660fa0072">switch_device</a> (<a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> &d)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for switching the active device in the current context. <a href="#ac8bcead4c47a372eef33d7d660fa0072"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">current_device</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the active device in the current context. <a href="#a31b4bfa886efdae7ada1c0c5f2591ed5"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue. <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#ab0e19e66c4f09964ef88fcfdf1a5afc3">enqueue</a> (KernelType &k)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function that enqueues the provided kernel into the first queue of the currently active device in the currently active context. <a href="#ab0e19e66c4f09964ef88fcfdf1a5afc3"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a0c2a174533a0aca403ff7c4aa802edcf"></a><!-- doxytag: member="viennacl::ocl::current_context" ref="a0c2a174533a0aca403ff7c4aa802edcf" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & current_context </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for returning the current context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a31b4bfa886efdae7ada1c0c5f2591ed5"></a><!-- doxytag: member="viennacl::ocl::current_device" ref="a31b4bfa886efdae7ada1c0c5f2591ed5" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & current_device </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for returning the active device in the current context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a46527eb5023de820b1f1c16ec5a11084"></a><!-- doxytag: member="viennacl::ocl::enqueue" ref="a46527eb5023de820b1f1c16ec5a11084" args="(KernelType &k, viennacl::ocl::command_queue const &queue)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void enqueue </td>
- <td>(</td>
- <td class="paramtype">KernelType & </td>
- <td class="paramname"> <em>k</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const & </td>
- <td class="paramname"> <em>queue</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Enqueues a kernel in the provided queue. </p>
-
-</div>
-</div>
-<a class="anchor" id="ab0e19e66c4f09964ef88fcfdf1a5afc3"></a><!-- doxytag: member="viennacl::ocl::enqueue" ref="ab0e19e66c4f09964ef88fcfdf1a5afc3" args="(KernelType &k)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::enqueue </td>
- <td>(</td>
- <td class="paramtype">KernelType & </td>
- <td class="paramname"> <em>k</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function that enqueues the provided kernel into the first queue of the currently active device in the currently active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a61a73653d92f1eb2ef9c649ec253e29f"></a><!-- doxytag: member="viennacl::ocl::get_kernel" ref="a61a73653d92f1eb2ef9c649ec253e29f" args="(std::string const &prog_name, std::string const &kernel_name)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1kernel.html">viennacl::ocl::kernel</a>& viennacl::ocl::get_kernel </td>
- <td>(</td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>prog_name</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>kernel_name</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the kernel for a particular program from the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="aaa732391e632ec192953cc997fa269df"></a><!-- doxytag: member="viennacl::ocl::get_queue" ref="aaa732391e632ec192953cc997fa269df" args="(cl_device_id dev_id, unsigned int queue_id=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& viennacl::ocl::get_queue </td>
- <td>(</td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>dev_id</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>queue_id</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the queue for a particular device in the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a053c7351f8606ff49117e251683a77b4"></a><!-- doxytag: member="viennacl::ocl::get_queue" ref="a053c7351f8606ff49117e251683a77b4" args="(viennacl::ocl::device d, unsigned int queue_id=0)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& viennacl::ocl::get_queue </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> </td>
- <td class="paramname"> <em>d</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>queue_id</em> = <code>0</code></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the queue for a particular device in the current active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac7871671987d322a8766aea79b1cd17a"></a><!-- doxytag: member="viennacl::ocl::get_queue" ref="ac7871671987d322a8766aea79b1cd17a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a>& viennacl::ocl::get_queue </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for getting the default queue for the currently active device in the active context. </p>
-
-</div>
-</div>
-<a class="anchor" id="aae6d53d33250af634366a082eb389e1e"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="aae6d53d33250af634366a082eb389e1e" args="(long i, viennacl::ocl::cpu_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::set_context_device_type </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">viennacl::ocl::cpu_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to CPUs. </p>
-
-</div>
-</div>
-<a class="anchor" id="a8eb7b871db32c1425afe547854885e83"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="a8eb7b871db32c1425afe547854885e83" args="(long i, viennacl::ocl::accelerator_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::set_context_device_type </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">viennacl::ocl::accelerator_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to accelerators. </p>
-
-</div>
-</div>
-<a class="anchor" id="a0bda50e7a1d1ce32d0eb999bcf40ff65"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="a0bda50e7a1d1ce32d0eb999bcf40ff65" args="(long i, viennacl::ocl::gpu_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::set_context_device_type </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">viennacl::ocl::gpu_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to GPUs. </p>
-
-</div>
-</div>
-<a class="anchor" id="aa55ca72f1d88e6366d9d7555d5fd3e3c"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="aa55ca72f1d88e6366d9d7555d5fd3e3c" args="(long i, viennacl::ocl::default_tag)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::set_context_device_type </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">viennacl::ocl::default_tag</a> </td>
- <td class="paramname"></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context to the default OpenCL device type. </p>
-
-</div>
-</div>
-<a class="anchor" id="a11349d9bbd1691595c6ac23d03b294fd"></a><!-- doxytag: member="viennacl::ocl::set_context_device_type" ref="a11349d9bbd1691595c6ac23d03b294fd" args="(long i, cl_device_type dev_type)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::set_context_device_type </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_device_type </td>
- <td class="paramname"> <em>dev_type</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting the default device type for a context. </p>
-
-</div>
-</div>
-<a class="anchor" id="add1725d48cfd159ce187e287369d1cdb"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="add1725d48cfd159ce187e287369d1cdb" args="(long i, std::vector< cl_device_id > const &devices)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::setup_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_device_id > const & </td>
- <td class="paramname"> <em>devices</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting devices for a context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a643e413cdc3e3d682c8ae0c6f0a83e0a"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="a643e413cdc3e3d682c8ae0c6f0a83e0a" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::map< cl_device_id, std::vector< cl_command_queue > > const &queues)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::setup_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_context </td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_device_id > const & </td>
- <td class="paramname"> <em>devices</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::map< cl_device_id, std::vector< cl_command_queue > > const & </td>
- <td class="paramname"> <em>queues</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting up a context in ViennaCL from an existing OpenCL context. </p>
-
-</div>
-</div>
-<a class="anchor" id="aae5ebc6a53d1c2ac134b5d955c61ad9e"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="aae5ebc6a53d1c2ac134b5d955c61ad9e" args="(long i, cl_context c, std::vector< cl_device_id > const &devices, std::vector< cl_command_queue > const &queues)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::setup_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_context </td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_device_id > const & </td>
- <td class="paramname"> <em>devices</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::vector< cl_command_queue > const & </td>
- <td class="paramname"> <em>queues</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting up a context in ViennaCL from an existing OpenCL context. </p>
-
-</div>
-</div>
-<a class="anchor" id="a4ee09e7150e7158ac0e2fbfe21740138"></a><!-- doxytag: member="viennacl::ocl::setup_context" ref="a4ee09e7150e7158ac0e2fbfe21740138" args="(long i, cl_context c, cl_device_id d, cl_command_queue q)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::setup_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_context </td>
- <td class="paramname"> <em>c</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_device_id </td>
- <td class="paramname"> <em>d</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">cl_command_queue </td>
- <td class="paramname"> <em>q</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for setting up a context in ViennaCL from an existing OpenCL context. </p>
-
-</div>
-</div>
-<a class="anchor" id="acc1a7460a9ff237b7c0306c32c3d34c6"></a><!-- doxytag: member="viennacl::ocl::switch_context" ref="acc1a7460a9ff237b7c0306c32c3d34c6" args="(long i)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::switch_context </td>
- <td>(</td>
- <td class="paramtype">long </td>
- <td class="paramname"> <em>i</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for switching the current context. </p>
-
-</div>
-</div>
-<a class="anchor" id="ac8bcead4c47a372eef33d7d660fa0072"></a><!-- doxytag: member="viennacl::ocl::switch_device" ref="ac8bcead4c47a372eef33d7d660fa0072" args="(viennacl::ocl::device &d)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::ocl::switch_device </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> & </td>
- <td class="paramname"> <em>d</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Convenience function for switching the active device in the current context. </p>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1tools.html b/doc/doxygen/html/namespaceviennacl_1_1tools.html
deleted file mode 100644
index 66c6e8d..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1tools.html
+++ /dev/null
@@ -1,287 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::tools Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#nested-classes">Data Structures</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>viennacl::tools Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">result_of</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">traits</a></td></tr>
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html">const_sparse_matrix_adapted_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html">const_sparse_matrix_adapter</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. <a href="classviennacl_1_1tools_1_1const__sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html">sparse_matrix_adapted_iterator</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A non-const iterator for sparse matrices of type std::vector<std::map<unsigned int, SCALARTYPE> > <a href="classviennacl_1_1tools_1_1sparse__matrix__adapted__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html">sparse_matrix_adapter</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Adapts a non-const sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility. <a href="classviennacl_1_1tools_1_1sparse__matrix__adapter.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of a helper meta class for deducing the correct kernels for the supplied matrix. <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2 <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Supply suitable increment functions for the iterators: <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Simple enable-if variant that uses the SFINAE pattern. <a href="structviennacl_1_1tools_1_1enable__if.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A guard that checks whether the floating point type of GPU types is either float or double. <a href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes the const qualifier from a type. <a href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type. <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T> <a href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">readTextFromFile</a> (const std::string &filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a text from a file into a std::string. <a href="#ae0476afc58ea44d5d67ffe7384f59389"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">strReplace</a> (const std::string &text, std::string to_search, std::string to_replace)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Replaces all occurances of a substring by another stringstream. <a href="#aabca73e564ff14ed639cfe0a94c88cf8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class INT_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">INT_TYPE </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">roundUpToNextMultiple</a> (INT_TYPE to_reach, INT_TYPE base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rounds an integer to the next multiple of another integer. <a href="#a8422b8f21a3e19bc1dcd4cc3a8447227"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">make_double_kernel</a> (std::string const &source, std::string platform_info)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a double precision kernel out of a single precision kernel. <a href="#acac5a5c4b9410d22c87a4286042a42b0"></a><br/></td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="acac5a5c4b9410d22c87a4286042a42b0"></a><!-- doxytag: member="viennacl::tools::make_double_kernel" ref="acac5a5c4b9410d22c87a4286042a42b0" args="(std::string const &source, std::string platform_info)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string viennacl::tools::make_double_kernel </td>
- <td>(</td>
- <td class="paramtype">std::string const & </td>
- <td class="paramname"> <em>source</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>platform_info</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Create a double precision kernel out of a single precision kernel. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>source</em> </td><td>The source string </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>platform_info</em> </td><td>An info string that contains the OpenCL platform vendor </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The double precision kernel </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="ae0476afc58ea44d5d67ffe7384f59389"></a><!-- doxytag: member="viennacl::tools::readTextFromFile" ref="ae0476afc58ea44d5d67ffe7384f59389" args="(const std::string &filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string viennacl::tools::readTextFromFile </td>
- <td>(</td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>filename</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Reads a text from a file into a std::string. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>filename</em> </td><td>The filename </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The text read from the file </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="a8422b8f21a3e19bc1dcd4cc3a8447227"></a><!-- doxytag: member="viennacl::tools::roundUpToNextMultiple" ref="a8422b8f21a3e19bc1dcd4cc3a8447227" args="(INT_TYPE to_reach, INT_TYPE base)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">INT_TYPE viennacl::tools::roundUpToNextMultiple </td>
- <td>(</td>
- <td class="paramtype">INT_TYPE </td>
- <td class="paramname"> <em>to_reach</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">INT_TYPE </td>
- <td class="paramname"> <em>base</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Rounds an integer to the next multiple of another integer. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>INT_TYPE</em> </td><td>The integer type </td></tr>
- </table>
- </dd>
-</dl>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>to_reach</em> </td><td>The integer to be rounded up (ceil operation) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>base</em> </td><td>The base </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The smallest multiple of 'base' such that to_reach <= base </dd></dl>
-
-</div>
-</div>
-<a class="anchor" id="aabca73e564ff14ed639cfe0a94c88cf8"></a><!-- doxytag: member="viennacl::tools::strReplace" ref="aabca73e564ff14ed639cfe0a94c88cf8" args="(const std::string &text, std::string to_search, std::string to_replace)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">std::string viennacl::tools::strReplace </td>
- <td>(</td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>text</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>to_search</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>to_replace</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Replaces all occurances of a substring by another stringstream. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>text</em> </td><td>The string to search in </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>to_search</em> </td><td>The substring to search for </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>to_replace</em> </td><td>The replacement for found substrings </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>The resulting string </dd></dl>
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1result__of.html b/doc/doxygen/html/namespaceviennacl_1_1tools_1_1result__of.html
deleted file mode 100644
index c66e308..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1result__of.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::tools::result_of Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">result_of</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> </div>
- <div class="headertitle">
-<h1>viennacl::tools::result_of Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1traits.html b/doc/doxygen/html/namespaceviennacl_1_1tools_1_1traits.html
deleted file mode 100644
index 0b9b783..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1tools_1_1traits.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::tools::traits Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">traits</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>viennacl::tools::traits Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a> (MatrixType &<a class="el" href="classviennacl_1_1matrix.html">matrix</a>, size_t rows, size_t cols)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">resize</a> (VectorType &vec, size_t new_size)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a> (VectorType &vec)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> (VectorType &vec)</td></tr>
-</table>
-<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a1e44adefdd155bbd9a9d9a169f9ebcfb"></a><!-- doxytag: member="viennacl::tools::traits::clear" ref="a1e44adefdd155bbd9a9d9a169f9ebcfb" args="(VectorType &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::tools::traits::clear </td>
- <td>(</td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a331bbc1a30fe491fc4416993c336bc06"></a><!-- doxytag: member="viennacl::tools::traits::resize" ref="a331bbc1a30fe491fc4416993c336bc06" args="(VectorType &vec, size_t new_size)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::tools::traits::resize </td>
- <td>(</td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>new_size</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2c970f9e5f6646b2c6de39d51a5a7e50"></a><!-- doxytag: member="viennacl::tools::traits::resize" ref="a2c970f9e5f6646b2c6de39d51a5a7e50" args="(MatrixType &matrix, size_t rows, size_t cols)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void viennacl::tools::traits::resize </td>
- <td>(</td>
- <td class="paramtype">MatrixType & </td>
- <td class="paramname"> <em>matrix</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">size_t </td>
- <td class="paramname"> <em>cols</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab56a8d68c5b23bac1e41386447e29c5f"></a><!-- doxytag: member="viennacl::tools::traits::size" ref="ab56a8d68c5b23bac1e41386447e29c5f" args="(VectorType &vec)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">unsigned int viennacl::tools::traits::size </td>
- <td>(</td>
- <td class="paramtype">VectorType & </td>
- <td class="paramname"> <em>vec</em></td>
- <td> ) </td>
- <td></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/namespaceviennacl_1_1traits.html b/doc/doxygen/html/namespaceviennacl_1_1traits.html
deleted file mode 100644
index 905d68f..0000000
--- a/doc/doxygen/html/namespaceviennacl_1_1traits.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: viennacl::traits Namespace Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="namespaces.html"><span>Namespace List</span></a></li>
- <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> </div>
- <div class="headertitle">
-<h1>viennacl::traits Namespace Reference</h1> </div>
-</div>
-<div class="contents">
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/nav_f.png b/doc/doxygen/html/nav_f.png
deleted file mode 100644
index 1b07a16..0000000
Binary files a/doc/doxygen/html/nav_f.png and /dev/null differ
diff --git a/doc/doxygen/html/nav_h.png b/doc/doxygen/html/nav_h.png
deleted file mode 100644
index 01f5fa6..0000000
Binary files a/doc/doxygen/html/nav_h.png and /dev/null differ
diff --git a/doc/doxygen/html/norm__1_8hpp.html b/doc/doxygen/html/norm__1_8hpp.html
deleted file mode 100644
index f96b118..0000000
--- a/doc/doxygen/html/norm__1_8hpp.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for the l^1-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.
-<a href="#_details">More...</a></p>
-<code>#include <math.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="norm__1_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_1 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ac5e7e99c21b05b4db0e9422d9c9ed181">norm_1</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &vector, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for the l^1-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations. </p>
-<p>Generic interface for the l^infty-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.</p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__1_8hpp_source.html b/doc/doxygen/html/norm__1_8hpp_source.html
deleted file mode 100644
index b0925e1..0000000
--- a/doc/doxygen/html/norm__1_8hpp_source.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_1.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="norm__1_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_NORM_1_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_NORM_1_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span> <span class="comment">//for sqrt()</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="comment">//</span>
-<a name="l00029"></a>00029 <span class="comment">// generic norm_1 function</span>
-<a name="l00030"></a>00030 <span class="comment">// uses tag dispatch to identify which algorithm</span>
-<a name="l00031"></a>00031 <span class="comment">// should be called </span>
-<a name="l00032"></a>00032 <span class="comment">//</span>
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="preprocessor"> #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00038"></a>00038 <span class="comment">// UBLAS</span>
-<a name="l00039"></a>00039 <span class="comment">//</span>
-<a name="l00040"></a>00040 <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00041"></a>00041 <span class="keyword">typename</span> VectorT::value_type
-<a name="l00042"></a>00042 <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a>(VectorT <span class="keyword">const</span>& vector,
-<a name="l00043"></a>00043 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00044"></a>00044 >::type* dummy = 0)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00047"></a>00047 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">boost::numeric::ublas::norm_1</a>(vector);
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049 <span class="preprocessor"> #endif</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span>
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00053"></a>00053 <span class="comment">// STL</span>
-<a name="l00054"></a>00054 <span class="comment">//</span>
-<a name="l00055"></a>00055 <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT>
-<a name="l00056"></a>00056 <span class="keyword">typename</span> VectorT::value_type
-<a name="l00057"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">00057</a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a>(VectorT <span class="keyword">const</span>& v1,
-<a name="l00058"></a>00058 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00059"></a>00059 >::type* dummy = 0)
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00062"></a>00062 <span class="keyword">typename</span> VectorT::value_type result = 0;
-<a name="l00063"></a>00063 <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT::size_type i=0; i<v1.size(); ++i)
-<a name="l00064"></a>00064 result += fabs(v1[i]);
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 <span class="keywordflow">return</span> result;
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00070"></a>00070 <span class="comment">// VIENNACL</span>
-<a name="l00071"></a>00071 <span class="comment">//</span>
-<a name="l00072"></a>00072 <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00073"></a>00073 <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>,
-<a name="l00074"></a>00074 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00075"></a>00075 viennacl::op_norm_1 >
-<a name="l00076"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ac5e7e99c21b05b4db0e9422d9c9ed181">00076</a> <a class="code" href="namespaceviennacl_1_1linalg.html#ab37ecf5aa97762b3e174b862912f510a">norm_1</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>,
-<a name="l00077"></a>00077 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00078"></a>00078 >::type* dummy = 0)
-<a name="l00079"></a>00079 {
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>,
-<a name="l00081"></a>00081 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00082"></a>00082 viennacl::op_norm_1 >(vector, vector);
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 } <span class="comment">// end namespace linalg</span>
-<a name="l00086"></a>00086 } <span class="comment">// end namespace viennacl</span>
-<a name="l00087"></a>00087 <span class="preprocessor">#endif</span>
-<a name="l00088"></a>00088 <span class="preprocessor"></span>
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__2_8hpp.html b/doc/doxygen/html/norm__2_8hpp.html
deleted file mode 100644
index 6262d76..0000000
--- a/doc/doxygen/html/norm__2_8hpp.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for the l^2-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations.
-<a href="#_details">More...</a></p>
-<code>#include <math.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="norm__2_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_2 > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12a0a2106e96f8f1625b6c5bdec90f4c">norm_2</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for the l^2-norm. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a> for implementations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__2_8hpp_source.html b/doc/doxygen/html/norm__2_8hpp_source.html
deleted file mode 100644
index 2ed8439..0000000
--- a/doc/doxygen/html/norm__2_8hpp_source.html
+++ /dev/null
@@ -1,192 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_2.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="norm__2_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_NORM_2_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_NORM_2_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span> <span class="comment">//for sqrt()</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="comment">//</span>
-<a name="l00029"></a>00029 <span class="comment">// generic norm_2 function</span>
-<a name="l00030"></a>00030 <span class="comment">// uses tag dispatch to identify which algorithm</span>
-<a name="l00031"></a>00031 <span class="comment">// should be called </span>
-<a name="l00032"></a>00032 <span class="comment">//</span>
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00036"></a>00036 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00037"></a>00037 <span class="comment">// MTL4</span>
-<a name="l00038"></a>00038 <span class="comment">//</span>
-<a name="l00039"></a>00039 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00041"></a>00041 ScalarType <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(mtl::dense_vector<ScalarType> <span class="keyword">const</span> & v)
-<a name="l00042"></a>00042 {
-<a name="l00043"></a>00043 <span class="comment">// std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00044"></a>00044 <span class="keywordflow">return</span> mtl::two_norm(v);
-<a name="l00045"></a>00045 }
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="preprocessor"> #else</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00049"></a>00049 <span class="keyword">typename</span> VectorT::value_type
-<a name="l00050"></a>00050 <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v,
-<a name="l00051"></a>00051 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">viennacl::is_mtl4</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00052"></a>00052 >::type* dummy = 0)
-<a name="l00053"></a>00053 {
-<a name="l00054"></a>00054 <span class="comment">// std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00055"></a>00055 <span class="keywordflow">return</span> mtl::two_norm(v);
-<a name="l00056"></a>00056 }
-<a name="l00057"></a>00057 <span class="preprocessor"> #endif</span>
-<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00059"></a>00059 <span class="preprocessor"></span>
-<a name="l00060"></a>00060
-<a name="l00061"></a>00061 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00062"></a>00062 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00063"></a>00063 <span class="comment">// EIGEN</span>
-<a name="l00064"></a>00064 <span class="comment">//</span>
-<a name="l00065"></a>00065 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00066"></a>00066 <span class="preprocessor"></span> <span class="keywordtype">float</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(Eigen::VectorXf <span class="keyword">const</span> & v)
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="comment">// std::cout << "eigen .. " << std::endl;</span>
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> v.norm();
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="keywordtype">double</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(Eigen::VectorXd <span class="keyword">const</span> & v)
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="comment">// std::cout << "eigen .. " << std::endl;</span>
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> v.norm();
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="preprocessor"> #else</span>
-<a name="l00079"></a>00079 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00080"></a>00080 <span class="keyword">typename</span> VectorT::RealScalar
-<a name="l00081"></a>00081 <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v,
-<a name="l00082"></a>00082 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">viennacl::is_eigen</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00083"></a>00083 >::type* dummy = 0)
-<a name="l00084"></a>00084 {
-<a name="l00085"></a>00085 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00086"></a>00086 <span class="keywordflow">return</span> v.norm();
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088 <span class="preprocessor"> #endif</span>
-<a name="l00089"></a>00089 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00090"></a>00090 <span class="preprocessor"></span>
-<a name="l00091"></a>00091
-<a name="l00092"></a>00092 <span class="preprocessor"> #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00093"></a>00093 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00094"></a>00094 <span class="comment">// UBLAS</span>
-<a name="l00095"></a>00095 <span class="comment">//</span>
-<a name="l00096"></a>00096 <span class="preprocessor"> #if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType >
-<a name="l00098"></a>00098 ScalarType
-<a name="l00099"></a>00099 <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(boost::numeric::ublas::vector<ScalarType> <span class="keyword">const</span> & v)
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00102"></a>00102 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">boost::numeric::ublas::norm_2</a>(v);
-<a name="l00103"></a>00103 }
-<a name="l00104"></a>00104 <span class="preprocessor"> #else</span>
-<a name="l00105"></a>00105 <span class="preprocessor"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00106"></a>00106 <span class="keyword">typename</span> VectorT::value_type
-<a name="l00107"></a>00107 <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v,
-<a name="l00108"></a>00108 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00109"></a>00109 >::type* dummy = 0)
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">boost::numeric::ublas::norm_2</a>(v);
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 <span class="preprocessor"> #endif</span>
-<a name="l00115"></a>00115 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span>
-<a name="l00117"></a>00117
-<a name="l00118"></a>00118 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00119"></a>00119 <span class="comment">// STL</span>
-<a name="l00120"></a>00120 <span class="comment">//</span>
-<a name="l00121"></a>00121 <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT>
-<a name="l00122"></a>00122 <span class="keyword">typename</span> VectorT::value_type
-<a name="l00123"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">00123</a> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(VectorT <span class="keyword">const</span>& v1,
-<a name="l00124"></a>00124 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00125"></a>00125 >::type* dummy = 0)
-<a name="l00126"></a>00126 {
-<a name="l00127"></a>00127 <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00128"></a>00128 <span class="keyword">typename</span> VectorT::value_type result = 0;
-<a name="l00129"></a>00129 <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT::size_type i=0; i<v1.size(); ++i)
-<a name="l00130"></a>00130 result += v1[i] * v1[i];
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> sqrt(result);
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00136"></a>00136 <span class="comment">// VIENNACL</span>
-<a name="l00137"></a>00137 <span class="comment">//</span>
-<a name="l00138"></a>00138 <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00139"></a>00139 <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>,
-<a name="l00140"></a>00140 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00141"></a>00141 viennacl::op_norm_2 >
-<a name="l00142"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a12a0a2106e96f8f1625b6c5bdec90f4c">00142</a> <a class="code" href="namespaceviennacl_1_1linalg.html#a87acc0739e4f1bc63934e9ad24f35a9a">norm_2</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> <span class="keyword">const</span> & v,
-<a name="l00143"></a>00143 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00144"></a>00144 >::type* dummy = 0)
-<a name="l00145"></a>00145 {
-<a name="l00146"></a>00146 <span class="comment">//std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00147"></a>00147 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>,
-<a name="l00148"></a>00148 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00149"></a>00149 viennacl::op_norm_2 >(v, v);
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 } <span class="comment">// end namespace linalg</span>
-<a name="l00153"></a>00153 } <span class="comment">// end namespace viennacl</span>
-<a name="l00154"></a>00154 <span class="preprocessor">#endif</span>
-<a name="l00155"></a>00155 <span class="preprocessor"></span>
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__inf_8hpp.html b/doc/doxygen/html/norm__inf_8hpp.html
deleted file mode 100644
index c02efbe..0000000
--- a/doc/doxygen/html/norm__inf_8hpp.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include <math.h></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-
-<p><a href="norm__inf_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT::value_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a> (VectorT const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< VectorT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ScalarType , unsigned int alignment> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, alignment ><br class="typebreak"/>
-, viennacl::op_norm_inf > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">norm_inf</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > const &v1, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, alignment > >::type >::value >::type *dummy=0)</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/norm__inf_8hpp_source.html b/doc/doxygen/html/norm__inf_8hpp_source.html
deleted file mode 100644
index 7a356f6..0000000
--- a/doc/doxygen/html/norm__inf_8hpp_source.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/norm_inf.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="norm__inf_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_NORM_INF_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_NORM_INF_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <math.h></span> <span class="comment">//for sqrt()</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="comment">//</span>
-<a name="l00029"></a>00029 <span class="comment">// generic norm_inf function</span>
-<a name="l00030"></a>00030 <span class="comment">// uses tag dispatch to identify which algorithm</span>
-<a name="l00031"></a>00031 <span class="comment">// should be called </span>
-<a name="l00032"></a>00032 <span class="comment">//</span>
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="preprocessor"> #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00038"></a>00038 <span class="comment">// UBLAS</span>
-<a name="l00039"></a>00039 <span class="comment">//</span>
-<a name="l00040"></a>00040 <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT >
-<a name="l00041"></a>00041 <span class="keyword">typename</span> VectorT::value_type
-<a name="l00042"></a>00042 <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a>(VectorT <span class="keyword">const</span>& v1,
-<a name="l00043"></a>00043 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00044"></a>00044 >::type* dummy = 0)
-<a name="l00045"></a>00045 {
-<a name="l00046"></a>00046 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00047"></a>00047 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">boost::numeric::ublas::norm_inf</a>(v1);
-<a name="l00048"></a>00048 }
-<a name="l00049"></a>00049 <span class="preprocessor"> #endif</span>
-<a name="l00050"></a>00050 <span class="preprocessor"></span>
-<a name="l00051"></a>00051
-<a name="l00052"></a>00052 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00053"></a>00053 <span class="comment">// STL</span>
-<a name="l00054"></a>00054 <span class="comment">//</span>
-<a name="l00055"></a>00055 <span class="keyword">template</span>< <span class="keyword">typename</span> VectorT>
-<a name="l00056"></a>00056 <span class="keyword">typename</span> VectorT::value_type
-<a name="l00057"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">00057</a> <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a>(VectorT <span class="keyword">const</span>& v1,
-<a name="l00058"></a>00058 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< VectorT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00059"></a>00059 >::type* dummy = 0)
-<a name="l00060"></a>00060 {
-<a name="l00061"></a>00061 <span class="comment">//std::cout << "stl .. " << std::endl;</span>
-<a name="l00062"></a>00062 <span class="keyword">typename</span> VectorT::value_type result = 0;
-<a name="l00063"></a>00063 <span class="keywordflow">for</span> (<span class="keyword">typename</span> VectorT::size_type i=0; i<v1.size(); ++i)
-<a name="l00064"></a>00064 {
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> (fabs(v1[i]) > result)
-<a name="l00066"></a>00066 result = fabs(v1[i]);
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068
-<a name="l00069"></a>00069 <span class="keywordflow">return</span> result;
-<a name="l00070"></a>00070 }
-<a name="l00071"></a>00071
-<a name="l00072"></a>00072 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00073"></a>00073 <span class="comment">// VIENNACL</span>
-<a name="l00074"></a>00074 <span class="comment">//</span>
-<a name="l00075"></a>00075 <span class="keyword">template</span>< <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00076"></a>00076 <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>,
-<a name="l00077"></a>00077 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00078"></a>00078 viennacl::op_norm_inf >
-<a name="l00079"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aadc500239f2e1967e584b71171cba268">00079</a> <a class="code" href="namespaceviennacl_1_1linalg.html#a03a5b5434ce08fac52aa22dbb684029c">norm_inf</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> <span class="keyword">const</span> & v1,
-<a name="l00080"></a>00080 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a> >::type >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00081"></a>00081 >::type* dummy = 0)
-<a name="l00082"></a>00082 {
-<a name="l00083"></a>00083 <span class="comment">//std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00084"></a>00084 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment></a>,
-<a name="l00085"></a>00085 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, alignment></a>,
-<a name="l00086"></a>00086 viennacl::op_norm_inf >(v1, v1);
-<a name="l00087"></a>00087 }
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 } <span class="comment">// end namespace linalg</span>
-<a name="l00090"></a>00090 } <span class="comment">// end namespace viennacl</span>
-<a name="l00091"></a>00091 <span class="preprocessor">#endif</span>
-<a name="l00092"></a>00092 <span class="preprocessor"></span>
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095
-<a name="l00096"></a>00096
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ocl_2forwards_8h.html b/doc/doxygen/html/ocl_2forwards_8h.html
deleted file mode 100644
index 2c7dc46..0000000
--- a/doc/doxygen/html/ocl_2forwards_8h.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#define-members">Defines</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>This file provides the forward declarations for the OpenCL layer of ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <stddef.h></code><br/>
-
-<p><a href="ocl_2forwards_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-<tr><td colspan="2"><h2><a name="define-members"></a>
-Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a> 8</td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KernelType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084">enqueue</a> (KernelType &k, <a class="el" href="classviennacl_1_1ocl_1_1command__queue.html">viennacl::ocl::command_queue</a> const &queue)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Enqueues a kernel in the provided queue. <a href="#a46527eb5023de820b1f1c16ec5a11084"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf">current_context</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the current context. <a href="#a0c2a174533a0aca403ff7c4aa802edcf"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1ocl_1_1device.html">viennacl::ocl::device</a> const & </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5">current_device</a> ()</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Convenience function for returning the active device in the current context. <a href="#a31b4bfa886efdae7ada1c0c5f2591ed5"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>This file provides the forward declarations for the OpenCL layer of ViennaCL. </p>
-<hr/><h2>Define Documentation</h2>
-<a class="anchor" id="a2d90eef0a67b2af2801368b3ab5b357f"></a><!-- doxytag: member="forwards.h::VIENNACL_OCL_MAX_DEVICE_NUM" ref="a2d90eef0a67b2af2801368b3ab5b357f" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">#define VIENNACL_OCL_MAX_DEVICE_NUM 8</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/ocl_2forwards_8h_source.html b/doc/doxygen/html/ocl_2forwards_8h_source.html
deleted file mode 100644
index 438fe0d..0000000
--- a/doc/doxygen/html/ocl_2forwards_8h_source.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/forwards.h</h1> </div>
-</div>
-<div class="contents">
-<a href="ocl_2forwards_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00019"></a>00019 <span class="preprocessor">#ifndef _VIENNACL_OCL_FORWARDS_H_</span>
-<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_OCL_FORWARDS_H_</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span>
-<a name="l00022"></a><a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">00022</a> <span class="preprocessor">#define VIENNACL_OCL_MAX_DEVICE_NUM 8</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <stddef.h></span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>ocl
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <span class="comment">//device type tags (cf. OpenCL standard)</span>
-<a name="l00031"></a><a class="code" href="structviennacl_1_1ocl_1_1gpu__tag.html">00031</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a> {};
-<a name="l00032"></a><a class="code" href="structviennacl_1_1ocl_1_1cpu__tag.html">00032</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a> {};
-<a name="l00033"></a><a class="code" href="structviennacl_1_1ocl_1_1accelerator__tag.html">00033</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a> {};
-<a name="l00034"></a><a class="code" href="structviennacl_1_1ocl_1_1default__tag.html">00034</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a> {};
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036
-<a name="l00037"></a>00037 <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a>;
-<a name="l00038"></a>00038 <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a>;
-<a name="l00039"></a>00039 <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">command_queue</a>;
-<a name="l00040"></a>00040 <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1context.html">context</a>;
-<a name="l00041"></a>00041 <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a>;
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keyword">template</span><<span class="keyword">class</span> OCL_TYPE>
-<a name="l00044"></a>00044 <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a>;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keyword">template</span> <<span class="keyword">typename</span> KernelType>
-<a name="l00047"></a>00047 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">enqueue</a>(KernelType & k, <a class="code" href="classviennacl_1_1ocl_1_1command__queue.html" title="A class representing a command queue.">viennacl::ocl::command_queue</a> <span class="keyword">const</span> & queue);
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049 <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>();
-<a name="l00050"></a>00050 <span class="keyword">inline</span> <a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">viennacl::ocl::device</a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">current_device</a>();
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052 } <span class="comment">//namespace viennacl</span>
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="preprocessor">#endif</span>
-<a name="l00055"></a>00055 <span class="preprocessor"></span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/open.png b/doc/doxygen/html/open.png
deleted file mode 100644
index 7b35d2c..0000000
Binary files a/doc/doxygen/html/open.png and /dev/null differ
diff --git a/doc/doxygen/html/platform_8hpp.html b/doc/doxygen/html/platform_8hpp.html
deleted file mode 100644
index eadbb39..0000000
--- a/doc/doxygen/html/platform_8hpp.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implements a OpenCL platform within ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <CL/cl.h></code><br/>
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-
-<p><a href="platform_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1platform.html">platform</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implements a OpenCL platform within ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/platform_8hpp_source.html b/doc/doxygen/html/platform_8hpp_source.html
deleted file mode 100644
index e8ec990..0000000
--- a/doc/doxygen/html/platform_8hpp_source.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/platform.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="platform_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_PLATFORM_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_PLATFORM_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#ifdef __APPLE__</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#include <OpenCL/cl.h></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#else</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor">#include <CL/cl.h></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#endif</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include <vector></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00031"></a>00031
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>viennacl
-<a name="l00033"></a>00033 {
-<a name="l00034"></a>00034 <span class="keyword">namespace </span>ocl
-<a name="l00035"></a>00035 {
-<a name="l00036"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html">00036</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1platform.html">platform</a>
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keyword">public</span>:
-<a name="l00040"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">00040</a> <a class="code" href="classviennacl_1_1ocl_1_1platform.html#ad69bddb2ba31b27415484b3da4213ba8">platform</a>()
-<a name="l00041"></a>00041 {
-<a name="l00042"></a>00042 cl_int err;
-<a name="l00043"></a>00043 cl_uint num_platforms;
-<a name="l00044"></a>00044 cl_platform_id ids[3];
-<a name="l00045"></a>00045 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL)</span>
-<a name="l00046"></a>00046 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Getting platform..."</span> << std::endl;
-<a name="l00047"></a>00047 <span class="preprocessor"> #endif</span>
-<a name="l00048"></a>00048 <span class="preprocessor"></span> err = clGetPlatformIDs(1, ids, &num_platforms);
-<a name="l00049"></a>00049 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00050"></a>00050 id_ = ids[0];
-<a name="l00051"></a>00051 assert(num_platforms > 0 && <span class="stringliteral">"ViennaCL: ERROR: No platform found!"</span>);
-<a name="l00052"></a>00052 }
-<a name="l00053"></a>00053
-<a name="l00054"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">00054</a> cl_platform_id <a class="code" href="classviennacl_1_1ocl_1_1platform.html#ab35e9ce3172db05c073d481fce1e26c4">id</a>()<span class="keyword"> const</span>
-<a name="l00055"></a>00055 <span class="keyword"> </span>{
-<a name="l00056"></a>00056 <span class="keywordflow">return</span> id_;
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00060"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62">00060</a> std::string <a class="code" href="classviennacl_1_1ocl_1_1platform.html#a2e1e4e2742b910c44558f9cf8e4add62" title="Returns an information string.">info</a>()<span class="keyword"> const</span>
-<a name="l00061"></a>00061 <span class="keyword"> </span>{
-<a name="l00062"></a>00062 <span class="keywordtype">char</span> buffer[1024];
-<a name="l00063"></a>00063 cl_int err;
-<a name="l00064"></a>00064 err = clGetPlatformInfo(id_, CL_PLATFORM_VENDOR, 1024 * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), buffer, NULL);
-<a name="l00065"></a>00065 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00066"></a>00066
-<a name="l00067"></a>00067 std::stringstream ss;
-<a name="l00068"></a>00068 ss << buffer << <span class="stringliteral">": "</span>;
-<a name="l00069"></a>00069
-<a name="l00070"></a>00070 err = clGetPlatformInfo(id_, CL_PLATFORM_VERSION, 1024 * <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), buffer, NULL);
-<a name="l00071"></a>00071 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 ss << buffer;
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> ss.str();
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077
-<a name="l00079"></a>00079
-<a name="l00080"></a><a class="code" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995">00080</a> std::vector<device> <a class="code" href="classviennacl_1_1ocl_1_1platform.html#a257844d23a69f95c6a6572631ffa5995" title="Returns the available devices of the supplied device type.">devices</a>(cl_device_type dtype = CL_DEVICE_TYPE_DEFAULT)
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 cl_int err;
-<a name="l00083"></a>00083 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00084"></a>00084 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Querying devices available at current platform."</span> << std::endl;
-<a name="l00085"></a>00085 <span class="preprocessor"> #endif</span>
-<a name="l00086"></a>00086 <span class="preprocessor"></span> cl_device_id device_ids[VIENNACL_OCL_MAX_DEVICE_NUM];
-<a name="l00087"></a>00087 cl_uint num_devices;
-<a name="l00088"></a>00088 err = clGetDeviceIDs(id_, dtype, <a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a>, device_ids, &num_devices);
-<a name="l00089"></a>00089 <span class="keywordflow">if</span> (err == CL_DEVICE_NOT_FOUND && dtype == CL_DEVICE_TYPE_DEFAULT)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <span class="comment">//workaround for ATI Stream SDK v2.3: No CPUs detected with default device type:</span>
-<a name="l00092"></a>00092 err = clGetDeviceIDs(id_, CL_DEVICE_TYPE_CPU, <a class="code" href="ocl_2forwards_8h.html#a2d90eef0a67b2af2801368b3ab5b357f">VIENNACL_OCL_MAX_DEVICE_NUM</a>, device_ids, &num_devices);
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094
-<a name="l00095"></a>00095 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00096"></a>00096 <span class="preprocessor"> #if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_DEVICE)</span>
-<a name="l00097"></a>00097 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"ViennaCL: Found "</span> << num_devices << <span class="stringliteral">" devices."</span> << std::endl;
-<a name="l00098"></a>00098 <span class="preprocessor"> #endif</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span>
-<a name="l00100"></a>00100 assert(num_devices > 0 && <span class="stringliteral">"Error in viennacl::ocl::platform::devices(): No OpenCL devices available!"</span>);
-<a name="l00101"></a>00101 std::vector<device> devices;
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="keywordflow">for</span> (cl_uint i=0; i<num_devices; ++i)
-<a name="l00104"></a>00104 devices.push_back(<a class="code" href="classviennacl_1_1ocl_1_1device.html" title="A class representing a compute device (e.g. a GPU).">device</a>(device_ids[i]));
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> devices;
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keyword">private</span>:
-<a name="l00110"></a>00110 cl_platform_id id_;
-<a name="l00111"></a>00111 };
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/prod_8hpp.html b/doc/doxygen/html/prod_8hpp.html
deleted file mode 100644
index c20f626..0000000
--- a/doc/doxygen/html/prod_8hpp.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Generic interface for matrix-vector and matrix-matrix products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>, <a class="el" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>, <a class="el" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a> and <a class="el" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a> for implementations.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="prod_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T , typename A1 , typename A2 , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a07b1f6f849c9950dd557bbf3e38f569d">prod_impl</a> (std::vector< std::vector< T, A1 >, A2 > const &matrix, VectorT const &vector)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename KEY , typename DATA , typename COMPARE , typename AMAP , typename AVEC , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a8bb2b3cdaa265974abb81154593357b3">prod_impl</a> (std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > const &matrix, VectorT const &vector)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename VectorT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">VectorT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a> (MatrixT const &matrix, VectorT const &vector, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__stl.html">viennacl::is_stl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">prod</a> (MatrixT const &matrix, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< NumericT, ALIGNMENT > const &vector, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, <br class="typebreak"/>
-ALIGNMENT >, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a12682dd49c61d3897b1c18e49042c721">prod</a> (MatrixT const &matrix_A, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT > const &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixT , typename NumericT , typename F , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const MatrixT, const <br class="typebreak"/>
-<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a><br class="typebreak"/>
-< NumericT, F, ALIGNMENT ><br class="typebreak"/>
-, viennacl::op_trans ><br class="typebreak"/>
-, viennacl::op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">prod</a> (MatrixT const &matrix_A, const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< NumericT, F, ALIGNMENT >, viennacl::op_trans > &matrix_B, typename <a class="el" href="structviennacl_1_1tools_1_1enable__if.html">viennacl::tools::enable_if</a>< <a class="el" href="structviennacl_1_1is__viennacl.html">viennacl::is_viennacl</a>< typename <a class="el" href="structviennacl_1_1traits_1_1tag__of.html">viennacl::traits::tag_of</a>< MatrixT >::type >::value >::type *dummy=0)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Generic interface for matrix-vector and matrix-matrix products. See <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>, <a class="el" href="matrix__operations_8hpp.html" title="Implementations of dense matrix related operations. also matrix-vector products.">viennacl/linalg/matrix_operations.hpp</a>, <a class="el" href="compressed__matrix__operations_8hpp.html" title="Implementations of operations using compressed_matrix.">viennacl/linalg/compressed_matrix_operations.hpp</a> and <a class="el" href="coordinate__matrix__operations_8hpp.html" title="Implementations of operations using coordinate_matrix.">viennacl/linalg/coordinate_matrix_operations.hpp</a> for implementations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/prod_8hpp_source.html b/doc/doxygen/html/prod_8hpp_source.html
deleted file mode 100644
index 253f21a..0000000
--- a/doc/doxygen/html/prod_8hpp_source.html
+++ /dev/null
@@ -1,224 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/prod.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="prod_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_PROD_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_PROD_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="tag__of_8hpp.html" title="Dispatch facility for distinguishing between ublas, STL and ViennaCL types.">tag_of.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <vector></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include <map></span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="keyword">namespace </span>viennacl
-<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="comment">//</span>
-<a name="l00032"></a>00032 <span class="comment">// generic prod function</span>
-<a name="l00033"></a>00033 <span class="comment">// uses tag dispatch to identify which algorithm</span>
-<a name="l00034"></a>00034 <span class="comment">// should be called </span>
-<a name="l00035"></a>00035 <span class="comment">//</span>
-<a name="l00036"></a>00036 <span class="keyword">namespace </span>linalg
-<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00039"></a>00039 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00040"></a>00040 <span class="comment">// mtl4</span>
-<a name="l00041"></a>00041 <span class="comment">//</span>
-<a name="l00042"></a>00042 <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00043"></a>00043 VectorT
-<a name="l00044"></a>00044 <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a>, VectorT <span class="keyword">const</span>& vector,
-<a name="l00045"></a>00045 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">viennacl::is_mtl4</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00046"></a>00046 >::type* dummy = 0)
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="comment">// std::cout << "mtl4 .. " << std::endl;</span>
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> VectorT(matrix * vector);
-<a name="l00050"></a>00050 }
-<a name="l00051"></a>00051 <span class="preprocessor"> #endif</span>
-<a name="l00052"></a>00052 <span class="preprocessor"></span>
-<a name="l00053"></a>00053 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00055"></a>00055 <span class="comment">// Eigen</span>
-<a name="l00056"></a>00056 <span class="comment">//</span>
-<a name="l00057"></a>00057 <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00058"></a>00058 VectorT
-<a name="l00059"></a>00059 <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a>, VectorT <span class="keyword">const</span>& vector,
-<a name="l00060"></a>00060 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">viennacl::is_eigen</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00061"></a>00061 >::type* dummy = 0)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> matrix * vector;
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 <span class="preprocessor"> #endif</span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span>
-<a name="l00068"></a>00068 <span class="preprocessor"> #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00069"></a>00069 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00070"></a>00070 <span class="comment">// UBLAS</span>
-<a name="l00071"></a>00071 <span class="comment">//</span>
-<a name="l00072"></a>00072 <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00073"></a>00073 VectorT
-<a name="l00074"></a>00074 <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a>, VectorT <span class="keyword">const</span>& vector,
-<a name="l00075"></a>00075 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_ublas</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00076"></a>00076 >::type* dummy = 0)
-<a name="l00077"></a>00077 {
-<a name="l00078"></a>00078 <span class="comment">// std::cout << "ublas .. " << std::endl;</span>
-<a name="l00079"></a>00079 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">boost::numeric::ublas::prod</a>(matrix, vector);
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081 <span class="preprocessor"> #endif</span>
-<a name="l00082"></a>00082 <span class="preprocessor"></span>
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00085"></a>00085 <span class="comment">// STL type</span>
-<a name="l00086"></a>00086 <span class="comment">//</span>
-<a name="l00087"></a>00087
-<a name="l00088"></a>00088 <span class="comment">// dense matrix-vector product:</span>
-<a name="l00089"></a>00089 <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2, <span class="keyword">typename</span> VectorT >
-<a name="l00090"></a>00090 VectorT
-<a name="l00091"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a07b1f6f849c9950dd557bbf3e38f569d">00091</a> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(std::vector< std::vector<T, A1>, A2 > <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>)
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 VectorT result(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size());
-<a name="l00094"></a>00094 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T, A1>::size_type i=0; i<<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size(); ++i)
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 result[i] = 0; <span class="comment">//we will not assume that VectorT is initialized to zero</span>
-<a name="l00097"></a>00097 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<T, A1>::size_type j=0; j<<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i].size(); ++j)
-<a name="l00098"></a>00098 result[i] += <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i][j] * vector[j];
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100 <span class="keywordflow">return</span> result;
-<a name="l00101"></a>00101 }
-<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <span class="comment">// sparse matrix-vector product:</span>
-<a name="l00104"></a>00104 <span class="keyword">template</span>< <span class="keyword">typename</span> KEY, <span class="keyword">typename</span> DATA, <span class="keyword">typename</span> COMPARE, <span class="keyword">typename</span> AMAP, <span class="keyword">typename</span> AVEC, <span class="keyword">typename</span> VectorT >
-<a name="l00105"></a>00105 VectorT
-<a name="l00106"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a8bb2b3cdaa265974abb81154593357b3">00106</a> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(std::vector< std::map<KEY, DATA, COMPARE, AMAP>, AVEC > <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>)
-<a name="l00107"></a>00107 {
-<a name="l00108"></a>00108 <span class="keyword">typedef</span> std::vector< std::map<KEY, DATA, COMPARE, AMAP>, AVEC > MatrixType;
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110 VectorT result(<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size());
-<a name="l00111"></a>00111 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::size_type i=0; i<<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>.size(); ++i)
-<a name="l00112"></a>00112 {
-<a name="l00113"></a>00113 result[i] = 0; <span class="comment">//we will not assume that VectorT is initialized to zero</span>
-<a name="l00114"></a>00114 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::map<KEY, DATA, COMPARE, AMAP>::const_iterator row_entries = <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i].begin();
-<a name="l00115"></a>00115 row_entries != <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>[i].end();
-<a name="l00116"></a>00116 ++row_entries)
-<a name="l00117"></a>00117 result[i] += row_entries->second * vector[row_entries->first];
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119 <span class="keywordflow">return</span> result;
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> VectorT >
-<a name="l00124"></a>00124 VectorT
-<a name="l00125"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">00125</a> <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, VectorT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>,
-<a name="l00126"></a>00126 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">viennacl::is_stl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00127"></a>00127 >::type* dummy = 0)
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="comment">// std::cout << "std .. " << std::endl;</span>
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">prod_impl</a>(matrix, vector);
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00134"></a>00134 <span class="comment">// VIENNACL</span>
-<a name="l00135"></a>00135 <span class="comment">//</span>
-<a name="l00136"></a>00136 <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> NumericT, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT >
-<a name="l00137"></a>00137 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression</a>< <span class="keyword">const</span> MatrixT,
-<a name="l00138"></a>00138 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<NumericT, ALIGNMENT></a>,
-<a name="l00139"></a>00139 viennacl::op_prod >
-<a name="l00140"></a><a class="code" href="namespaceviennacl_1_1linalg.html#abe959c83610141222955cfa6c52ed961">00140</a> <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>,
-<a name="l00141"></a>00141 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<NumericT, ALIGNMENT></a> <span class="keyword">const</span>& <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>,
-<a name="l00142"></a>00142 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00143"></a>00143 >::type* dummy = 0)
-<a name="l00144"></a>00144 {
-<a name="l00145"></a>00145 <span class="comment">// std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a5e71c3317fe25d0ce5e31be66597d8bb" title="Returns a proxy class that represents matrix-vector multiplication.">viennacl::linalg::prod_impl</a>(matrix, vector);
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> NumericT, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT >
-<a name="l00150"></a>00150 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT,
-<a name="l00151"></a>00151 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00152"></a>00152 viennacl::op_prod >
-<a name="l00153"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a12682dd49c61d3897b1c18e49042c721">00153</a> <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& matrix_A,
-<a name="l00154"></a>00154 <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a> <span class="keyword">const</span>& matrix_B,
-<a name="l00155"></a>00155 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00156"></a>00156 >::type* dummy = 0)
-<a name="l00157"></a>00157 {
-<a name="l00158"></a>00158 <span class="comment">// std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00159"></a>00159 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT,
-<a name="l00160"></a>00160 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00161"></a>00161 viennacl::op_prod >(matrix_A, matrix_B);
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163
-<a name="l00164"></a>00164 <span class="keyword">template</span>< <span class="keyword">typename</span> MatrixT, <span class="keyword">typename</span> NumericT, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT >
-<a name="l00165"></a>00165 <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT,
-<a name="l00166"></a>00166 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00167"></a>00167 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00168"></a>00168 viennacl::op_trans >,
-<a name="l00169"></a>00169 viennacl::op_prod >
-<a name="l00170"></a><a class="code" href="namespaceviennacl_1_1linalg.html#acfb30430740c1e7b8ab2c81aee31878a">00170</a> <a class="code" href="namespaceviennacl_1_1linalg.html#ae1687a9eb40c623b00c880cd88f176d7">prod</a>(MatrixT <span class="keyword">const</span>& matrix_A,
-<a name="l00171"></a>00171 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00172"></a>00172 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00173"></a>00173 viennacl::op_trans > & matrix_B,
-<a name="l00174"></a>00174 <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">viennacl::tools::enable_if</a>< <a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">viennacl::is_viennacl</a>< <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::traits::tag_of< MatrixT >::type</a> >::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>
-<a name="l00175"></a>00175 >::type* dummy = 0)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <span class="comment">// std::cout << "viennacl .. " << std::endl;</span>
-<a name="l00178"></a>00178 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> MatrixT,
-<a name="l00179"></a>00179 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression< const viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00180"></a>00180 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<NumericT, F, ALIGNMENT></a>,
-<a name="l00181"></a>00181 viennacl::op_trans >,
-<a name="l00182"></a>00182 viennacl::op_prod >(matrix_A, matrix_B);
-<a name="l00183"></a>00183 <span class="comment">//return viennacl::linalg::prod_impl(matrix_A, matrix_B);</span>
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 } <span class="comment">// end namespace linalg</span>
-<a name="l00187"></a>00187 } <span class="comment">// end namespace viennacl</span>
-<a name="l00188"></a>00188 <span class="preprocessor">#endif</span>
-<a name="l00189"></a>00189 <span class="preprocessor"></span>
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/program_8hpp.html b/doc/doxygen/html/program_8hpp.html
deleted file mode 100644
index ac5682b..0000000
--- a/doc/doxygen/html/program_8hpp.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implements an OpenCL program class for ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="ocl_2forwards_8h_source.html">viennacl/ocl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-
-<p><a href="program_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1ocl_1_1program.html">program</a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implements an OpenCL program class for ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/program_8hpp_source.html b/doc/doxygen/html/program_8hpp_source.html
deleted file mode 100644
index 0ab169f..0000000
--- a/doc/doxygen/html/program_8hpp_source.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/program.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="program_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_PROGRAM_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_PROGRAM_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <vector></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="ocl_2forwards_8h.html" title="This file provides the forward declarations for the OpenCL layer of ViennaCL.">viennacl/ocl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>viennacl
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>ocl
-<a name="l00031"></a>00031 {
-<a name="l00032"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html">00032</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a>
-<a name="l00033"></a>00033 {
-<a name="l00034"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#aaae51189d6e1e8b24b5654e3704ff50b">00034</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">kernel</a>;
-<a name="l00035"></a>00035
-<a name="l00036"></a>00036 <span class="keyword">typedef</span> std::vector<viennacl::ocl::kernel> KernelContainer;
-<a name="l00037"></a>00037
-<a name="l00038"></a>00038 <span class="keyword">public</span>:
-<a name="l00039"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">00039</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a>() {}
-<a name="l00040"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">00040</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html#a396823275fb41e9a64fff458b6b4415d">program</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> <span class="keyword">const</span> & h, std::string <span class="keyword">const</span> & prog_name = std::string()) : handle_(h), name_(prog_name) {}
-<a name="l00041"></a>00041
-<a name="l00042"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a454539d49698f09affc0a399289e2611">00042</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html#ac22da204c9d1580d094bc37b41ee6a5a">program</a>(<a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a> <span class="keyword">const</span> & other)
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 handle_ = other.handle_;
-<a name="l00045"></a>00045 name_ = other.name_;
-<a name="l00046"></a>00046 kernels_ = other.kernels_;
-<a name="l00047"></a>00047 }
-<a name="l00048"></a>00048
-<a name="l00049"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">00049</a> <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#ab38d1becd4cb60e89dd0b11f3f4e3fe4">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1program.html">program</a> & other)
-<a name="l00050"></a>00050 {
-<a name="l00051"></a>00051 handle_ = other.handle_;
-<a name="l00052"></a>00052 name_ = other.name_;
-<a name="l00053"></a>00053 kernels_ = other.kernels_;
-<a name="l00054"></a>00054 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00055"></a>00055 }
-<a name="l00056"></a>00056
-<a name="l00057"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">00057</a> std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">name</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> name_; }
-<a name="l00058"></a>00058
-<a name="l00060"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92">00060</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(std::string <span class="keyword">const</span> & kernel_name)
-<a name="l00061"></a>00061 {
-<a name="l00062"></a>00062 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> temp(handle_, kernel_name);
-<a name="l00063"></a>00063 kernels_.push_back(temp);
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> kernels_.back();
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066
-<a name="l00068"></a><a class="code" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb">00068</a> <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a593fbca8c511a382654582513faf24fb" title="Returns the kernel with the provided name.">get_kernel</a>(std::string <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1ocl_1_1program.html#a836b9d82daf374fab15aac8c87eb1133">name</a>)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 <span class="comment">//std::cout << "Requiring kernel " << name << " from program " << name_ << std::endl;</span>
-<a name="l00071"></a>00071 <span class="keywordflow">for</span> (KernelContainer::iterator it = kernels_.begin();
-<a name="l00072"></a>00072 it != kernels_.end();
-<a name="l00073"></a>00073 ++it)
-<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (it->name() == name)
-<a name="l00076"></a>00076 <span class="keywordflow">return</span> *it;
-<a name="l00077"></a>00077 }
-<a name="l00078"></a>00078 std::cerr << <span class="stringliteral">"ViennaCL: FATAL ERROR: Could not find kernel '"</span> << name << <span class="stringliteral">"'"</span> << std::endl;
-<a name="l00079"></a>00079 assert(!<span class="stringliteral">"Kernel not found"</span>);
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> kernels_[0]; <span class="comment">//return a defined object</span>
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="keyword">private</span>:
-<a name="l00084"></a>00084 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> & <a class="code" href="classviennacl_1_1ocl_1_1handle.html" title="Handle class the effectively represents a smart pointer for OpenCL handles.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> handle_; }
-<a name="l00085"></a>00085
-<a name="l00086"></a>00086 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_program></a> handle_;
-<a name="l00087"></a>00087 std::string name_;
-<a name="l00088"></a>00088 KernelContainer kernels_;
-<a name="l00089"></a>00089 };
-<a name="l00090"></a>00090 } <span class="comment">//namespace ocl</span>
-<a name="l00091"></a>00091 } <span class="comment">//namespace viennacl</span>
-<a name="l00092"></a>00092
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/row__scaling_8hpp.html b/doc/doxygen/html/row__scaling_8hpp.html
deleted file mode 100644
index d71d90b..0000000
--- a/doc/doxygen/html/row__scaling_8hpp.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>A row normalization preconditioner is implemented here.
-<a href="#_details">More...</a></p>
-<code>#include <vector></code><br/>
-<code>#include <cmath></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="vector_8hpp_source.html">viennacl/vector.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="compressed__matrix_8hpp_source.html">viennacl/compressed_matrix.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="row__scaling_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">row_scaling_tag</a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A tag for a row preconditioner. <a href="classviennacl_1_1linalg_1_1row__scaling__tag.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling.html">row_scaling< MatrixType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1row__scaling.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">row_scaling< compressed_matrix< ScalarType, MAT_ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Jacobi preconditioner class, can be supplied to <a class="el" href="namespaceviennacl_1_1linalg.html#ab50f87d195eb82ddbe5ce910e914bc55" title="Implementation of the stabilized Bi-conjugate gradient solver.">solve()</a>-routines. <a href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A row normalization preconditioner is implemented here. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/row__scaling_8hpp_source.html b/doc/doxygen/html/row__scaling_8hpp_source.html
deleted file mode 100644
index 8d73e77..0000000
--- a/doc/doxygen/html/row__scaling_8hpp_source.html
+++ /dev/null
@@ -1,232 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/row_scaling.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="row__scaling_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_ROW_SCALING_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_ROW_SCALING_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <cmath></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="vector_8hpp.html" title="The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations ...">viennacl/vector.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="compressed__matrix_8hpp.html" title="Implementation of the compressed_matrix class.">viennacl/compressed_matrix.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="preprocessor">#include <map></span>
-<a name="l00030"></a>00030
-<a name="l00031"></a>00031 <span class="keyword">namespace </span>viennacl
-<a name="l00032"></a>00032 {
-<a name="l00033"></a>00033 <span class="keyword">namespace </span>linalg
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035
-<a name="l00038"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html">00038</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a>
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">public</span>:
-<a name="l00045"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e">00045</a> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a12412041036e5beed6c8c1e0f2fade5e" title="Constructor.">row_scaling_tag</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> p = 2) : norm_(p) {}
-<a name="l00046"></a>00046
-<a name="l00048"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687">00048</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> norm_; }
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <span class="keyword">private</span>:
-<a name="l00051"></a>00051 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> norm_;
-<a name="l00052"></a>00052 };
-<a name="l00053"></a>00053
-<a name="l00054"></a>00054
-<a name="l00057"></a>00057 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00058"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html">00058</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">row_scaling</a>
-<a name="l00059"></a>00059 {
-<a name="l00060"></a>00060 <span class="keyword">typedef</span> <span class="keyword">typename</span> MatrixType::value_type ScalarType;
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="keyword">public</span>:
-<a name="l00068"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334">00068</a> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334" title="Constructor for the preconditioner.">row_scaling</a>(MatrixType <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat), tag_(tag)
-<a name="l00069"></a>00069 {
-<a name="l00070"></a>00070 assert(mat.size1() == mat.size2());
-<a name="l00071"></a>00071 diag_M_inv.resize(mat.size1()); <span class="comment">//resize without preserving values</span>
-<a name="l00072"></a>00072
-<a name="l00073"></a>00073 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator1 row_it = system_matrix.begin1();
-<a name="l00074"></a>00074 row_it != system_matrix.end1();
-<a name="l00075"></a>00075 ++row_it)
-<a name="l00076"></a>00076 {
-<a name="l00077"></a>00077 diag_M_inv[row_it.index1()];
-<a name="l00078"></a>00078 <span class="keywordflow">for</span> (<span class="keyword">typename</span> MatrixType::const_iterator2 col_it = row_it.begin();
-<a name="l00079"></a>00079 col_it != row_it.end();
-<a name="l00080"></a>00080 ++col_it)
-<a name="l00081"></a>00081 {
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (tag_.<a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>() == 1)
-<a name="l00083"></a>00083 diag_M_inv[col_it.index1()] += std::fabs(*col_it);
-<a name="l00084"></a>00084 <span class="keywordflow">else</span>
-<a name="l00085"></a>00085 diag_M_inv[col_it.index1()] += (*col_it) * (*col_it);
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087 <span class="keywordflow">if</span> (diag_M_inv[row_it.index1()] == 0)
-<a name="l00088"></a>00088 <span class="keywordflow">throw</span> <span class="stringliteral">"ViennaCL: Zero row encountered while setting up row scaling preconditioner!"</span>;
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (tag_.<a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>() == 1)
-<a name="l00091"></a>00091 diag_M_inv[row_it.index1()] = <span class="keyword">static_cast<</span>ScalarType<span class="keyword">></span>(1.0) / diag_M_inv[row_it.index1()];
-<a name="l00092"></a>00092 <span class="keywordflow">else</span>
-<a name="l00093"></a>00093 diag_M_inv[row_it.index1()] = <span class="keyword">static_cast<</span>ScalarType<span class="keyword">></span>(1.0) / std::sqrt(diag_M_inv[row_it.index1()]);
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097
-<a name="l00099"></a>00099 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00100"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a">00100</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. row applied vec (right hand side),.">apply</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00101"></a>00101 <span class="keyword"> </span>{
-<a name="l00102"></a>00102 assert(vec.size() == diag_M_inv.size());
-<a name="l00103"></a>00103 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<vec.size(); ++i)
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 vec[i] *= diag_M_inv[i];
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a>00109 <span class="keyword">private</span>:
-<a name="l00110"></a>00110 MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00111"></a>00111 <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag_;
-<a name="l00112"></a>00112 std::vector<ScalarType> diag_M_inv;
-<a name="l00113"></a>00113 };
-<a name="l00114"></a>00114
-<a name="l00115"></a>00115
-<a name="l00120"></a>00120 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00121"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html">00121</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html" title="Jacobi preconditioner class, can be supplied to solve()-routines.">row_scaling</a>< <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, MAT_ALIGNMENT> >
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<ScalarType, MAT_ALIGNMENT></a> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a>;
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="keyword">public</span>:
-<a name="l00131"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a505b14065ba3fd81710d349907a73334">00131</a> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a505b14065ba3fd81710d349907a73334" title="Constructor for the preconditioner.">row_scaling</a>(<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">MatrixType</a> <span class="keyword">const</span> & mat, <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag) : system_matrix(mat), tag_(tag), diag_M_inv(mat.size1())
-<a name="l00132"></a>00132 {
-<a name="l00133"></a>00133 assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ac1b69377d2b4e37ccb5fab0fa125bc9a" title="Returns the number of columns.">size2</a>());
-<a name="l00134"></a>00134
-<a name="l00135"></a>00135 init_gpu();
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138 <span class="comment">/*</span>
-<a name="l00139"></a>00139 <span class="comment"> void init_cpu()</span>
-<a name="l00140"></a>00140 <span class="comment"> {</span>
-<a name="l00141"></a>00141 <span class="comment"> std::vector< std::map<unsigned int, ScalarType> > cpu_check;</span>
-<a name="l00142"></a>00142 <span class="comment"> std::vector<ScalarType> diag_M_inv_cpu(system_matrix.size1());</span>
-<a name="l00143"></a>00143 <span class="comment"> </span>
-<a name="l00144"></a>00144 <span class="comment"> copy(system_matrix, cpu_check);</span>
-<a name="l00145"></a>00145 <span class="comment"> viennacl::tools::const_sparse_matrix_adapter<ScalarType> cpu_check_adapter(cpu_check);</span>
-<a name="l00146"></a>00146 <span class="comment"> </span>
-<a name="l00147"></a>00147 <span class="comment"> for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator1 row_it = cpu_check_adapter.begin1();</span>
-<a name="l00148"></a>00148 <span class="comment"> row_it != cpu_check_adapter.end1();</span>
-<a name="l00149"></a>00149 <span class="comment"> ++row_it)</span>
-<a name="l00150"></a>00150 <span class="comment"> {</span>
-<a name="l00151"></a>00151 <span class="comment"> diag_M_inv_cpu[row_it.index1()] = 0;</span>
-<a name="l00152"></a>00152 <span class="comment"> for (typename viennacl::tools::const_sparse_matrix_adapter<ScalarType>::const_iterator2 col_it = row_it.begin();</span>
-<a name="l00153"></a>00153 <span class="comment"> col_it != row_it.end();</span>
-<a name="l00154"></a>00154 <span class="comment"> ++col_it)</span>
-<a name="l00155"></a>00155 <span class="comment"> {</span>
-<a name="l00156"></a>00156 <span class="comment"> if (tag_.norm() == 1)</span>
-<a name="l00157"></a>00157 <span class="comment"> diag_M_inv_cpu[col_it.index1()] += std::fabs(*col_it);</span>
-<a name="l00158"></a>00158 <span class="comment"> else</span>
-<a name="l00159"></a>00159 <span class="comment"> diag_M_inv_cpu[col_it.index1()] += (*col_it) * (*col_it);</span>
-<a name="l00160"></a>00160 <span class="comment"> }</span>
-<a name="l00161"></a>00161 <span class="comment"> if (diag_M_inv_cpu[row_it.index1()] == 0)</span>
-<a name="l00162"></a>00162 <span class="comment"> throw "ViennaCL: Zero row encountered while setting up row scaling preconditioner!";</span>
-<a name="l00163"></a>00163 <span class="comment"> </span>
-<a name="l00164"></a>00164 <span class="comment"> if (tag_.norm() == 1)</span>
-<a name="l00165"></a>00165 <span class="comment"> diag_M_inv_cpu[row_it.index1()] = static_cast<ScalarType>(1.0) / diag_M_inv_cpu[row_it.index1()];</span>
-<a name="l00166"></a>00166 <span class="comment"> else</span>
-<a name="l00167"></a>00167 <span class="comment"> diag_M_inv_cpu[row_it.index1()] = static_cast<ScalarType>(1.0) / std::sqrt(diag_M_inv_cpu[row_it.index1()]);</span>
-<a name="l00168"></a>00168 <span class="comment"> }</span>
-<a name="l00169"></a>00169 <span class="comment"> </span>
-<a name="l00170"></a>00170 <span class="comment"> diag_M_inv.resize(system_matrix.size1(), false);</span>
-<a name="l00171"></a>00171 <span class="comment"> viennacl::fast_copy(diag_M_inv_cpu, diag_M_inv);</span>
-<a name="l00172"></a>00172 <span class="comment"> } */</span>
-<a name="l00173"></a>00173
-<a name="l00174"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a9688692acd00f424e984302f94f328c2">00174</a> <span class="keywordtype">void</span> init_gpu()
-<a name="l00175"></a>00175 {
-<a name="l00176"></a>00176 <span class="keywordflow">if</span> (tag_.<a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html#a1122a7018fc4679fa8f6aaf37976f687" title="Returns the index p of the l^p-norm (1... sum(abs(x)), 2... sqrt(sum(x_i^2))). Currently only p=1 and...">norm</a>() == 1)
-<a name="l00177"></a>00177 {
-<a name="l00178"></a>00178 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(
-<a name="l00179"></a>00179 viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
-<a name="l00180"></a>00180 <span class="stringliteral">"row_scaling_1"</span>);
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(),
-<a name="l00183"></a>00183 diag_M_inv, <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(diag_M_inv.size())) );
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185 <span class="keywordflow">else</span>
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(
-<a name="l00188"></a>00188 viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
-<a name="l00189"></a>00189 <span class="stringliteral">"row_scaling_2"</span>);
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a3fe10834aae81725adf7b0614222a3b3" title="Returns the OpenCL handle to the row index array.">handle1</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#ab51dbf980dbd2eeb1f3e7d45d8f5b898" title="Returns the OpenCL handle to the column index array.">handle2</a>(), system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle to the matrix entry array.">handle</a>(),
-<a name="l00192"></a>00192 diag_M_inv, <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(diag_M_inv.size())) );
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195
-<a name="l00196"></a>00196 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00197"></a><a class="code" href="classviennacl_1_1linalg_1_1row__scaling_3_01compressed__matrix_3_01_scalar_type_00_01_m_a_t___a_l_i_g_n_m_e_n_t_01_4_01_4.html#a5f15f216a95536e869b31f5e529fe975">00197</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1linalg_1_1row__scaling.html#a58cb0bc6ab58fc3b770c91cc15362d0a" title="Apply to res = b - Ax, i.e. row applied vec (right hand side),.">apply</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00198"></a>00198 <span class="keyword"> </span>{
-<a name="l00199"></a>00199 assert(system_matrix.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="comment">//run kernel (reuse Jacobi kernel):</span>
-<a name="l00202"></a>00202 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
-<a name="l00203"></a>00203 <span class="stringliteral">"diag_precond"</span>);
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>( k(diag_M_inv, vec, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())) );
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="keyword">private</span>:
-<a name="l00209"></a>00209 MatrixType <span class="keyword">const</span> & system_matrix;
-<a name="l00210"></a>00210 <a class="code" href="classviennacl_1_1linalg_1_1row__scaling__tag.html" title="A tag for a row preconditioner.">row_scaling_tag</a> <span class="keyword">const</span> & tag_;
-<a name="l00211"></a>00211 <a class="code" href="classviennacl_1_1vector.html">viennacl::vector<ScalarType></a> diag_M_inv;
-<a name="l00212"></a>00212 };
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 }
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="preprocessor">#endif</span>
-<a name="l00221"></a>00221 <span class="preprocessor"></span>
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar_8hpp.html b/doc/doxygen/html/scalar_8hpp.html
deleted file mode 100644
index 1544b1a..0000000
--- a/doc/doxygen/html/scalar_8hpp.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementation of the ViennaCL scalar class.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar__kernels_8h_source.html">viennacl/linalg/kernels/scalar_kernels.h</a>"</code><br/>
-<code>#include <iostream></code><br/>
-
-<p><a href="scalar_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar__expression.html">scalar_expression< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A proxy for scalar expressions (e.g. from inner vector products). <a href="classviennacl_1_1scalar__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1scalar.html">scalar< TYPE ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type like float or double. <a href="classviennacl_1_1scalar.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5b3d6b04f0d7dac6aec4342e0b37656e">operator<<</a> (std::ostream &s, const scalar< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly print the value of a scalar to an output stream. <a href="#a5b3d6b04f0d7dac6aec4342e0b37656e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::istream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">operator>></a> (std::istream &s, const scalar< SCALARTYPE > &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Allows to directly read a value of a scalar from an input stream. <a href="#ab4ea659d4449111a55f748c34226f305"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementation of the ViennaCL scalar class. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar_8hpp_source.html b/doc/doxygen/html/scalar_8hpp_source.html
deleted file mode 100644
index 806ee1b..0000000
--- a/doc/doxygen/html/scalar_8hpp_source.html
+++ /dev/null
@@ -1,498 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/scalar.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="scalar_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_SCALAR_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_SCALAR_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="scalar__kernels_8h.html">viennacl/linalg/kernels/scalar_kernels.h</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="preprocessor">#include <iostream></span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>viennacl
-<a name="l00029"></a>00029 {
-<a name="l00037"></a>00037 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00038"></a><a class="code" href="classviennacl_1_1scalar__expression.html">00038</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression</a>
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040 <span class="keyword">typedef</span> <span class="keyword">typename</span> LHS::value_type DummyType; <span class="comment">//Visual C++ 2005 does not allow to write LHS::value_type::value_type</span>
-<a name="l00041"></a>00041 <span class="keyword">public</span>:
-<a name="l00042"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a009d628c069d36ec739ad659e1846413">00042</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> DummyType::value_type ScalarType;
-<a name="l00043"></a>00043
-<a name="l00044"></a><a class="code" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">00044</a> <a class="code" href="classviennacl_1_1scalar__expression.html#ae0f765f70db16af7c6d8763b8316c17c">scalar_expression</a>(LHS & lhs, RHS & rhs) : _lhs(lhs), _rhs(rhs) {}
-<a name="l00045"></a>00045
-<a name="l00047"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276">00047</a> LHS & <a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _lhs; }
-<a name="l00049"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01">00049</a> RHS & <a class="code" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01" title="Returns the left hand side operand.">get_rhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rhs; }
-<a name="l00050"></a>00050
-<a name="l00052"></a><a class="code" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c">00052</a> <a class="code" href="classviennacl_1_1scalar__expression.html#a0da7f7ae214746d5b37ea6c28855155c" title="Conversion operator to a ViennaCL scalar.">operator ScalarType </a>()<span class="keyword"> const</span>
-<a name="l00053"></a>00053 <span class="keyword"> </span>{
-<a name="l00054"></a>00054 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">viennacl::scalar<ScalarType></a> temp;
-<a name="l00055"></a>00055 temp = *<span class="keyword">this</span>;
-<a name="l00056"></a>00056 <span class="keywordflow">return</span> temp;
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <span class="keyword">private</span>:
-<a name="l00060"></a>00060 LHS & _lhs;
-<a name="l00061"></a>00061 RHS & _rhs;
-<a name="l00062"></a>00062 };
-<a name="l00063"></a>00063
-<a name="l00071"></a>00071 <span class="keyword">template</span><<span class="keyword">class</span> TYPE>
-<a name="l00072"></a><a class="code" href="classviennacl_1_1scalar.html">00072</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a>
-<a name="l00073"></a>00073 {
-<a name="l00074"></a>00074 <span class="keyword">public</span>:
-<a name="l00076"></a><a class="code" href="classviennacl_1_1scalar.html#a46dcdd29c175f21b173b96ae4dd0a46e">00076</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<TYPE>::ResultType</a> value_type;
-<a name="l00077"></a>00077
-<a name="l00079"></a><a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e">00079</a> <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>()
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 viennacl::linalg::kernels::scalar<TYPE, 1>::init();
-<a name="l00082"></a>00082 val_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(TYPE));
-<a name="l00083"></a>00083 }
-<a name="l00085"></a><a class="code" href="classviennacl_1_1scalar.html#ab491583d840a0f494f5b6cf505defa7f">00085</a> <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>(TYPE val)
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 viennacl::linalg::kernels::scalar<TYPE, 1>::init();
-<a name="l00088"></a>00088 val_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(TYPE), &val);
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090
-<a name="l00096"></a><a class="code" href="classviennacl_1_1scalar.html#a577ea3a750a7975b2a5c256f94081b1c">00096</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1scalar.html#a577ea3a750a7975b2a5c256f94081b1c" title="Wraps an existing memory entry into a scalar.">scalar</a>(cl_mem mem, <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>) : val_(mem) { val_.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); }
-<a name="l00097"></a>00097
-<a name="l00099"></a>00099 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00100"></a><a class="code" href="classviennacl_1_1scalar.html#a1c6a89a7d2a7e6744f1b92d8466e0c56">00100</a> <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)
-<a name="l00101"></a>00101 {
-<a name="l00102"></a>00102 viennacl::linalg::kernels::scalar<TYPE, 1>::init();
-<a name="l00103"></a>00103 val_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(TYPE));
-<a name="l00104"></a>00104 *<span class="keyword">this</span> = proxy;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="comment">//copy constructor</span>
-<a name="l00109"></a><a class="code" href="classviennacl_1_1scalar.html#a5449b52ebb29a6a9005ae8dc082b3415">00109</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1scalar.html#a79453d11d5d0a0ab021762a68a73d97e" title="Allocates the memory for the scalar, but does not set it to zero.">scalar</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a> & other) : val_(viennacl::ocl::<a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">current_context</a>().create_memory(CL_MEM_READ_WRITE, sizeof(TYPE)))
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="comment">//copy value:</span>
-<a name="l00112"></a>00112 cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(TYPE), 0, NULL, NULL);
-<a name="l00113"></a>00113 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00114"></a>00114 }
-<a name="l00115"></a>00115
-<a name="l00117"></a><a class="code" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3">00117</a> <a class="code" href="classviennacl_1_1scalar.html#aeeb8591dc2b4252a62d89522f583c9b3" title="Reads the value of the scalar from the GPU and returns the float or double value.">operator TYPE</a>()<span class="keyword"> const</span>
-<a name="l00118"></a>00118 <span class="keyword"> </span>{
-<a name="l00119"></a>00119 TYPE tmp;
-<a name="l00120"></a>00120 cl_int err;
-<a name="l00121"></a>00121 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), val_, CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &tmp, 0, NULL, NULL);
-<a name="l00122"></a>00122 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00123"></a>00123 <span class="keywordflow">return</span> tmp;
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00127"></a><a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c">00127</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="comment">//copy value:</span>
-<a name="l00130"></a>00130 cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1entry__proxy.html#a625da5e66b023a7ed067040a21ec834d" title="Returns the memory viennacl::ocl::handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1entry__proxy.html#a5a79972f223067007dcfd4350cbad30f" title="Returns the index of the represented element.">index</a>() * <span class="keyword">sizeof</span>(TYPE), 0, <span class="keyword">sizeof</span>(TYPE), 0, NULL, NULL);
-<a name="l00131"></a>00131 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134
-<a name="l00136"></a><a class="code" href="classviennacl_1_1scalar.html#aaeeb1bb633ef72f60b37ee06b3fd07da">00136</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00137"></a>00137 {
-<a name="l00138"></a>00138 <span class="comment">//copy value:</span>
-<a name="l00139"></a>00139 cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), other.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), 0, 0, <span class="keyword">sizeof</span>(TYPE), 0, NULL, NULL);
-<a name="l00140"></a>00140 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144
-<a name="l00145"></a><a class="code" href="classviennacl_1_1scalar.html#a7b7ff8ec9039215d41042fb6dff8b24e">00145</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">float</span> cpu_other)
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="comment">//copy value:</span>
-<a name="l00148"></a>00148 TYPE other = cpu_other;
-<a name="l00149"></a>00149 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00150"></a>00150 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00151"></a>00151
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154
-<a name="l00155"></a><a class="code" href="classviennacl_1_1scalar.html#a24e0667388106b9f4150ade71c219b29">00155</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">double</span> cpu_other)
-<a name="l00156"></a>00156 {
-<a name="l00157"></a>00157 <span class="comment">//copy value:</span>
-<a name="l00158"></a>00158 TYPE other = cpu_other;
-<a name="l00159"></a>00159 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00160"></a>00160 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00163"></a>00163 }
-<a name="l00164"></a>00164
-<a name="l00165"></a><a class="code" href="classviennacl_1_1scalar.html#a11b85e1905ff83211365912d4d5c3d48">00165</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">long</span> cpu_other)
-<a name="l00166"></a>00166 {
-<a name="l00167"></a>00167 <span class="comment">//copy value:</span>
-<a name="l00168"></a>00168 TYPE other = cpu_other;
-<a name="l00169"></a>00169 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00170"></a>00170 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00171"></a>00171
-<a name="l00172"></a>00172 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00173"></a>00173 }
-<a name="l00174"></a>00174
-<a name="l00175"></a><a class="code" href="classviennacl_1_1scalar.html#a601bfbe9d4b4f0a5136649f6b6f2062e">00175</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> cpu_other)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <span class="comment">//copy value:</span>
-<a name="l00178"></a>00178 TYPE other = cpu_other;
-<a name="l00179"></a>00179 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00180"></a>00180 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184
-<a name="l00185"></a><a class="code" href="classviennacl_1_1scalar.html#a2d72be42c42830b4e6f5426dc385daca">00185</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">int</span> cpu_other)
-<a name="l00186"></a>00186 {
-<a name="l00187"></a>00187 <span class="comment">//copy value:</span>
-<a name="l00188"></a>00188 TYPE other = cpu_other;
-<a name="l00189"></a>00189 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00190"></a>00190 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00191"></a>00191
-<a name="l00192"></a>00192 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194
-<a name="l00195"></a><a class="code" href="classviennacl_1_1scalar.html#a4de3e801606700dc657414c0634ad46e">00195</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> cpu_other)
-<a name="l00196"></a>00196 {
-<a name="l00197"></a>00197 <span class="comment">//copy value:</span>
-<a name="l00198"></a>00198 TYPE other = cpu_other;
-<a name="l00199"></a>00199 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), CL_TRUE, 0, <span class="keyword">sizeof</span>(TYPE), &other, 0, NULL, NULL);
-<a name="l00200"></a>00200 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00203"></a>00203 }
-<a name="l00205"></a>00205 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00206"></a><a class="code" href="classviennacl_1_1scalar.html#a8f7fe13c798d1186206cd1cebe76b41f">00206</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_inner_prod></a> <span class="keyword">const</span> & proxy)
-<a name="l00207"></a>00207 {
-<a name="l00208"></a>00208 <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">viennacl::linalg::inner_prod_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a039558d10a125ddba366e099b72c7b01" title="Returns the left hand side operand.">get_rhs</a>(), *<span class="keyword">this</span>);
-<a name="l00209"></a>00209 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211
-<a name="l00213"></a>00213 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00214"></a><a class="code" href="classviennacl_1_1scalar.html#a2f070f408c1f475ffb38ee82f59276c2">00214</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_norm_1></a> <span class="keyword">const</span> & proxy)
-<a name="l00215"></a>00215 {
-<a name="l00216"></a>00216 <a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30" title="Computes the l^1-norm of a vector.">viennacl::linalg::norm_1_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), *<span class="keyword">this</span>);
-<a name="l00217"></a>00217 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219
-<a name="l00221"></a>00221 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00222"></a><a class="code" href="classviennacl_1_1scalar.html#a896fd9035e7735fd9fb3ea18fbae225e">00222</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_norm_2></a> <span class="keyword">const</span> & proxy)
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a" title="Computes the l^2-norm of a vector - implementation.">viennacl::linalg::norm_2_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), *<span class="keyword">this</span>);
-<a name="l00225"></a>00225 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00226"></a>00226 }
-<a name="l00227"></a>00227
-<a name="l00229"></a>00229 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2>
-<a name="l00230"></a><a class="code" href="classviennacl_1_1scalar.html#acea2777143dac0b71bfa981adbdf0fc5">00230</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a2aebda7254fb1c2471fdedb2aa6dd36c" title="Assigns a vector entry.">operator= </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, op_norm_inf></a> <span class="keyword">const</span> & proxy)
-<a name="l00231"></a>00231 {
-<a name="l00232"></a>00232 <a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca" title="Computes the supremum-norm of a vector.">viennacl::linalg::norm_inf_impl</a>(proxy.<a class="code" href="classviennacl_1_1scalar__expression.html#a3abbcc6247aba0116cf7b95e231f3276" title="Returns the left hand side operand.">get_lhs</a>(), *<span class="keyword">this</span>);
-<a name="l00233"></a>00233 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00234"></a>00234 }
-<a name="l00235"></a>00235
-<a name="l00237"></a><a class="code" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9">00237</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9" title="Inplace addition of a ViennaCL scalar.">operator += </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00238"></a>00238 {
-<a name="l00239"></a>00239 <span class="comment">//get kernel:</span>
-<a name="l00240"></a>00240 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_add"</span>);
-<a name="l00241"></a>00241 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00242"></a>00242 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00243"></a>00243
-<a name="l00244"></a>00244 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00245"></a>00245 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00246"></a>00246 }
-<a name="l00248"></a><a class="code" href="classviennacl_1_1scalar.html#a3ead36ea34f169d78e44c621834d92fa">00248</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a54ddb6fd129bd75c57e27007c37a6ed9" title="Inplace addition of a ViennaCL scalar.">operator += </a>(TYPE other)
-<a name="l00249"></a>00249 {
-<a name="l00250"></a>00250 <span class="comment">//get kernel:</span>
-<a name="l00251"></a>00251 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_add"</span>);
-<a name="l00252"></a>00252 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00253"></a>00253 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00254"></a>00254
-<a name="l00255"></a>00255 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258
-<a name="l00259"></a>00259
-<a name="l00261"></a><a class="code" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c">00261</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c" title="Inplace subtraction of a ViennaCL scalar.">operator -= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00262"></a>00262 {
-<a name="l00263"></a>00263 <span class="comment">//get kernel:</span>
-<a name="l00264"></a>00264 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_sub"</span>);
-<a name="l00265"></a>00265 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00266"></a>00266 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00269"></a>00269 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00270"></a>00270 }
-<a name="l00272"></a><a class="code" href="classviennacl_1_1scalar.html#a73870d8ac2703677743701c8fa1d0ac0">00272</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a67a75928643713bf283d1bdce350589c" title="Inplace subtraction of a ViennaCL scalar.">operator -= </a>(TYPE other)
-<a name="l00273"></a>00273 {
-<a name="l00274"></a>00274 <span class="comment">//get kernel:</span>
-<a name="l00275"></a>00275 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_sub"</span>);
-<a name="l00276"></a>00276 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00277"></a>00277 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283
-<a name="l00285"></a><a class="code" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08">00285</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08" title="Inplace multiplication with a ViennaCL scalar.">operator *= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00286"></a>00286 {
-<a name="l00287"></a>00287 <span class="comment">//get kernel:</span>
-<a name="l00288"></a>00288 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_mul"</span>);
-<a name="l00289"></a>00289 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00290"></a>00290 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00291"></a>00291
-<a name="l00292"></a>00292 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00293"></a>00293 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00294"></a>00294 }
-<a name="l00296"></a><a class="code" href="classviennacl_1_1scalar.html#a70b79d882deca6e3cb7d86ac5b893c58">00296</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a9b5f86e060ae258394d0333cff946b08" title="Inplace multiplication with a ViennaCL scalar.">operator *= </a>(TYPE other)
-<a name="l00297"></a>00297 {
-<a name="l00298"></a>00298 <span class="comment">//get kernel:</span>
-<a name="l00299"></a>00299 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_mul"</span>);
-<a name="l00300"></a>00300 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00301"></a>00301 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00302"></a>00302
-<a name="l00303"></a>00303 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00304"></a>00304 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00305"></a>00305 }
-<a name="l00306"></a>00306
-<a name="l00307"></a>00307
-<a name="l00309"></a>00309
-<a name="l00310"></a><a class="code" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4">00310</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4" title="Inplace division with a ViennaCL scalar.">operator /= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00311"></a>00311 {
-<a name="l00312"></a>00312 <span class="comment">//get kernel:</span>
-<a name="l00313"></a>00313 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"inplace_div"</span>);
-<a name="l00314"></a>00314 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00315"></a>00315 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00316"></a>00316
-<a name="l00317"></a>00317 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00318"></a>00318 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00319"></a>00319 }
-<a name="l00321"></a><a class="code" href="classviennacl_1_1scalar.html#a0631b7d2624ee483233b85ead71b4a78">00321</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> & <a class="code" href="classviennacl_1_1scalar.html#a5bb32c06b69bc99ab13df93be2f262f4" title="Inplace division with a ViennaCL scalar.">operator /= </a>(TYPE other)
-<a name="l00322"></a>00322 {
-<a name="l00323"></a>00323 <span class="comment">//get kernel:</span>
-<a name="l00324"></a>00324 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_inplace_div"</span>);
-<a name="l00325"></a>00325 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00326"></a>00326 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00327"></a>00327
-<a name="l00328"></a>00328 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_));
-<a name="l00329"></a>00329 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00330"></a>00330 }
-<a name="l00331"></a>00331
-<a name="l00332"></a>00332
-<a name="l00334"></a>00334
-<a name="l00335"></a><a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88">00335</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88" title="Addition of two ViennaCL scalars.">operator + </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)
-<a name="l00336"></a>00336 {
-<a name="l00337"></a>00337 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00338"></a>00338 <span class="comment">//get kernel:</span>
-<a name="l00339"></a>00339 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00340"></a>00340 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00341"></a>00341 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00342"></a>00342
-<a name="l00343"></a>00343 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));
-<a name="l00344"></a>00344 <span class="keywordflow">return</span> result;
-<a name="l00345"></a>00345 }
-<a name="l00347"></a>00347 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00348"></a><a class="code" href="classviennacl_1_1scalar.html#a6459d7d73f3f0d94757b0b1461d59814">00348</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88" title="Addition of two ViennaCL scalars.">operator + </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00349"></a>00349 <span class="keyword"> </span>{
-<a name="l00350"></a>00350 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = proxy;
-<a name="l00351"></a>00351 <span class="comment">//get kernel:</span>
-<a name="l00352"></a>00352 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00353"></a>00353 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00354"></a>00354 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00355"></a>00355
-<a name="l00356"></a>00356 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));
-<a name="l00357"></a>00357 <span class="keywordflow">return</span> result;
-<a name="l00358"></a>00358 }
-<a name="l00360"></a><a class="code" href="classviennacl_1_1scalar.html#a843d737fff3a5d68391099cbf26381f2">00360</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#afa3e3a23770f8609d7a0c45eaa656e88" title="Addition of two ViennaCL scalars.">operator + </a>(TYPE other)
-<a name="l00361"></a>00361 {
-<a name="l00362"></a>00362 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00363"></a>00363 <span class="comment">//get kernel:</span>
-<a name="l00364"></a>00364 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_add"</span>);
-<a name="l00365"></a>00365 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00366"></a>00366 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));
-<a name="l00369"></a>00369 <span class="keywordflow">return</span> result;
-<a name="l00370"></a>00370 }
-<a name="l00371"></a>00371
-<a name="l00372"></a>00372
-<a name="l00374"></a>00374
-<a name="l00375"></a><a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32">00375</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32" title="Subtraction of two ViennaCL scalars.">operator - </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00376"></a>00376 <span class="keyword"> </span>{
-<a name="l00377"></a>00377 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00378"></a>00378 <span class="comment">//get kernel:</span>
-<a name="l00379"></a>00379 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00380"></a>00380 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00381"></a>00381 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00382"></a>00382
-<a name="l00383"></a>00383 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));
-<a name="l00384"></a>00384 <span class="keywordflow">return</span> result;
-<a name="l00385"></a>00385 }
-<a name="l00387"></a>00387 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00388"></a><a class="code" href="classviennacl_1_1scalar.html#a46f766bad633277898cb5c4dcd033d68">00388</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32" title="Subtraction of two ViennaCL scalars.">operator - </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00389"></a>00389 <span class="keyword"> </span>{
-<a name="l00390"></a>00390 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = *<span class="keyword">this</span>;
-<a name="l00391"></a>00391 <span class="comment">//get kernel:</span>
-<a name="l00392"></a>00392 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00393"></a>00393 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00394"></a>00394 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00395"></a>00395
-<a name="l00396"></a>00396 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));
-<a name="l00397"></a>00397 <span class="keywordflow">return</span> result;
-<a name="l00398"></a>00398 }
-<a name="l00400"></a><a class="code" href="classviennacl_1_1scalar.html#aeb369f81094dc1dcae284916a820fa34">00400</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#abdc9352f6678cbc1701d20b431901b32" title="Subtraction of two ViennaCL scalars.">operator - </a>(TYPE other)<span class="keyword"> const</span>
-<a name="l00401"></a>00401 <span class="keyword"> </span>{
-<a name="l00402"></a>00402 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00403"></a>00403 <span class="comment">//get kernel:</span>
-<a name="l00404"></a>00404 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_sub"</span>);
-<a name="l00405"></a>00405 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00406"></a>00406 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00407"></a>00407
-<a name="l00408"></a>00408 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));
-<a name="l00409"></a>00409 <span class="keywordflow">return</span> result;
-<a name="l00410"></a>00410
-<a name="l00411"></a>00411 <span class="keywordflow">return</span> result;
-<a name="l00412"></a>00412 }
-<a name="l00413"></a>00413
-<a name="l00415"></a>00415
-<a name="l00416"></a><a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16">00416</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16" title="Multiplication of two ViennaCL scalars.">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00417"></a>00417 <span class="keyword"> </span>{
-<a name="l00418"></a>00418 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00419"></a>00419 <span class="comment">//get kernel:</span>
-<a name="l00420"></a>00420 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"mul"</span>);
-<a name="l00421"></a>00421 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00422"></a>00422 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00423"></a>00423
-<a name="l00424"></a>00424 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));
-<a name="l00425"></a>00425 <span class="keywordflow">return</span> result;
-<a name="l00426"></a>00426 }
-<a name="l00428"></a>00428 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00429"></a><a class="code" href="classviennacl_1_1scalar.html#a8a8ee730a8f51c85440630a48d07429d">00429</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16" title="Multiplication of two ViennaCL scalars.">operator * </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00430"></a>00430 <span class="keyword"> </span>{
-<a name="l00431"></a>00431 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = proxy;
-<a name="l00432"></a>00432 <span class="comment">//get kernel:</span>
-<a name="l00433"></a>00433 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"mul"</span>);
-<a name="l00434"></a>00434 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00435"></a>00435 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00436"></a>00436
-<a name="l00437"></a>00437 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));
-<a name="l00438"></a>00438 <span class="keywordflow">return</span> result;
-<a name="l00439"></a>00439 }
-<a name="l00441"></a><a class="code" href="classviennacl_1_1scalar.html#a232414930e04594eeb40a5a387f91337">00441</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a4efbfcfdb603cbaa130b85fbb149eb16" title="Multiplication of two ViennaCL scalars.">operator * </a>(TYPE other)<span class="keyword"> const</span>
-<a name="l00442"></a>00442 <span class="keyword"> </span>{
-<a name="l00443"></a>00443 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00444"></a>00444 <span class="comment">//get kernel:</span>
-<a name="l00445"></a>00445 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_mul"</span>);
-<a name="l00446"></a>00446 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00447"></a>00447 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00448"></a>00448
-<a name="l00449"></a>00449 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));
-<a name="l00450"></a>00450 <span class="keywordflow">return</span> result;
-<a name="l00451"></a>00451 }
-<a name="l00452"></a>00452
-<a name="l00454"></a>00454
-<a name="l00455"></a><a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb">00455</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb" title="Division of two ViennaCL scalars.">operator / </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <span class="keyword">const</span> & other)<span class="keyword"> const</span>
-<a name="l00456"></a>00456 <span class="keyword"> </span>{
-<a name="l00457"></a>00457 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00458"></a>00458 <span class="comment">//get kernel:</span>
-<a name="l00459"></a>00459 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"divide"</span>);
-<a name="l00460"></a>00460 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00461"></a>00461 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00462"></a>00462
-<a name="l00463"></a>00463 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other.val_, result));
-<a name="l00464"></a>00464 <span class="keywordflow">return</span> result;
-<a name="l00465"></a>00465 }
-<a name="l00467"></a>00467 <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP>
-<a name="l00468"></a><a class="code" href="classviennacl_1_1scalar.html#a27b5a8f4b44fd9f9b83e3e9f274f01e7">00468</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb" title="Division of two ViennaCL scalars.">operator / </a>(<a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">scalar_expression<T1, T2, OP></a> <span class="keyword">const</span> & proxy)<span class="keyword"> const</span>
-<a name="l00469"></a>00469 <span class="keyword"> </span>{
-<a name="l00470"></a>00470 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result = proxy;
-<a name="l00471"></a>00471 <span class="comment">//get kernel:</span>
-<a name="l00472"></a>00472 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"divide"</span>);
-<a name="l00473"></a>00473 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00474"></a>00474 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00475"></a>00475
-<a name="l00476"></a>00476 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, result, result));
-<a name="l00477"></a>00477 <span class="keywordflow">return</span> result;
-<a name="l00478"></a>00478 }
-<a name="l00480"></a><a class="code" href="classviennacl_1_1scalar.html#affd5ad0c4067234e832db130cea14288">00480</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> <a class="code" href="classviennacl_1_1scalar.html#a1befc1cbf12e97f87caa1d2a18b560bb" title="Division of two ViennaCL scalars.">operator / </a>(TYPE other)<span class="keyword"> const</span>
-<a name="l00481"></a>00481 <span class="keyword"> </span>{
-<a name="l00482"></a>00482 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<TYPE></a> result;
-<a name="l00483"></a>00483 <span class="comment">//get kernel:</span>
-<a name="l00484"></a>00484 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::scalar<TYPE, 1>::program_name(), <span class="stringliteral">"cpu_div"</span>);
-<a name="l00485"></a>00485 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, 1);
-<a name="l00486"></a>00486 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, 1);
-<a name="l00487"></a>00487
-<a name="l00488"></a>00488 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(val_, other, result));
-<a name="l00489"></a>00489 <span class="keywordflow">return</span> result;
-<a name="l00490"></a>00490 }
-<a name="l00491"></a>00491
-<a name="l00493"></a><a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c">00493</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> val_; }
-<a name="l00494"></a>00494
-<a name="l00495"></a>00495 <span class="keyword">private</span>:
-<a name="l00496"></a>00496 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> val_;
-<a name="l00497"></a>00497 };
-<a name="l00498"></a>00498
-<a name="l00499"></a>00499
-<a name="l00500"></a>00500 <span class="comment">//stream operators:</span>
-<a name="l00502"></a>00502 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE>
-<a name="l00503"></a><a class="code" href="namespaceviennacl.html#a5b3d6b04f0d7dac6aec4342e0b37656e">00503</a> std::ostream & operator<<(std::ostream & s, const scalar<SCALARTYPE> & val)
-<a name="l00504"></a>00504 {
-<a name="l00505"></a>00505 SCALARTYPE temp = val;
-<a name="l00506"></a>00506 s << temp;
-<a name="l00507"></a>00507 <span class="keywordflow">return</span> s;
-<a name="l00508"></a>00508 }
-<a name="l00509"></a>00509
-<a name="l00511"></a>00511 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE>
-<a name="l00512"></a><a class="code" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305">00512</a> std::istream & <a class="code" href="namespaceviennacl.html#ab4ea659d4449111a55f748c34226f305" title="Allows to directly read a value of a scalar from an input stream.">operator>></a>(std::istream & s, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & val)
-<a name="l00513"></a>00513 {
-<a name="l00514"></a>00514 SCALARTYPE temp;
-<a name="l00515"></a>00515 s >> temp;
-<a name="l00516"></a>00516 val = temp;
-<a name="l00517"></a>00517 <span class="keywordflow">return</span> s;
-<a name="l00518"></a>00518 }
-<a name="l00519"></a>00519
-<a name="l00520"></a>00520 } <span class="comment">//namespace viennacl</span>
-<a name="l00521"></a>00521
-<a name="l00522"></a>00522 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__kernels_8h.html b/doc/doxygen/html/scalar__kernels_8h.html
deleted file mode 100644
index 538a70c..0000000
--- a/doc/doxygen/html/scalar__kernels_8h.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar__source_8h_source.html">viennacl/linalg/kernels/scalar_source.h</a>"</code><br/>
-
-<p><a href="scalar__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__kernels_8h_source.html b/doc/doxygen/html/scalar__kernels_8h_source.html
deleted file mode 100644
index 4f23782..0000000
--- a/doc/doxygen/html/scalar__kernels_8h_source.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="scalar__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_SCALAR_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_SCALAR_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="scalar__source_8h.html">viennacl/linalg/kernels/scalar_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>scalar;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">00022</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a><float, 1>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_scalar_1"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a>);
-<a name="l00052"></a>00052 std::string prog_name = program_name();
-<a name="l00053"></a>00053 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00054"></a>00054 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00055"></a>00055 <span class="preprocessor"> #endif</span>
-<a name="l00056"></a>00056 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00057"></a>00057 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00058"></a>00058 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00059"></a>00059 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_div"</span>);
-<a name="l00060"></a>00060 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_add"</span>);
-<a name="l00061"></a>00061 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_sub"</span>);
-<a name="l00062"></a>00062 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul"</span>);
-<a name="l00063"></a>00063 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00064"></a>00064 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul"</span>);
-<a name="l00065"></a>00065 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul"</span>);
-<a name="l00066"></a>00066 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul"</span>);
-<a name="l00067"></a>00067 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_add"</span>);
-<a name="l00068"></a>00068 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div"</span>);
-<a name="l00069"></a>00069 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00070"></a>00070 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_sub"</span>);
-<a name="l00071"></a>00071 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_div"</span>);
-<a name="l00074"></a>00074 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00075"></a>00075 } <span class="comment">//if</span>
-<a name="l00076"></a>00076 } <span class="comment">//init</span>
-<a name="l00077"></a>00077 }; <span class="comment">// struct</span>
-<a name="l00078"></a>00078
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080
-<a name="l00082"></a>00082 <span class="keyword">template</span> <>
-<a name="l00083"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">00083</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a><double, 1>
-<a name="l00084"></a>00084 {
-<a name="l00085"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00085</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> <span class="stringliteral">"d_scalar_1"</span>;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00089</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00092"></a>00092 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00093"></a>00093 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00095"></a>00095 {
-<a name="l00096"></a>00096 std::string source;
-<a name="l00097"></a>00097 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00098"></a>00098 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a>, fp64_ext));
-<a name="l00099"></a>00099 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a>, fp64_ext));
-<a name="l00100"></a>00100 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a>, fp64_ext));
-<a name="l00101"></a>00101 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a>, fp64_ext));
-<a name="l00102"></a>00102 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a>, fp64_ext));
-<a name="l00103"></a>00103 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a>, fp64_ext));
-<a name="l00104"></a>00104 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a>, fp64_ext));
-<a name="l00105"></a>00105 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a>, fp64_ext));
-<a name="l00106"></a>00106 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a>, fp64_ext));
-<a name="l00107"></a>00107 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a>, fp64_ext));
-<a name="l00108"></a>00108 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a>, fp64_ext));
-<a name="l00109"></a>00109 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a>, fp64_ext));
-<a name="l00110"></a>00110 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a>, fp64_ext));
-<a name="l00111"></a>00111 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a>, fp64_ext));
-<a name="l00112"></a>00112 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a>, fp64_ext));
-<a name="l00113"></a>00113 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a>, fp64_ext));
-<a name="l00114"></a>00114 std::string prog_name = program_name();
-<a name="l00115"></a>00115 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00116"></a>00116 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00117"></a>00117 <span class="preprocessor"> #endif</span>
-<a name="l00118"></a>00118 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00119"></a>00119 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00120"></a>00120 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00121"></a>00121 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_div"</span>);
-<a name="l00122"></a>00122 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_add"</span>);
-<a name="l00123"></a>00123 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_sub"</span>);
-<a name="l00124"></a>00124 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul"</span>);
-<a name="l00125"></a>00125 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00126"></a>00126 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul"</span>);
-<a name="l00127"></a>00127 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul"</span>);
-<a name="l00128"></a>00128 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul"</span>);
-<a name="l00129"></a>00129 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_add"</span>);
-<a name="l00130"></a>00130 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div"</span>);
-<a name="l00131"></a>00131 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00132"></a>00132 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_sub"</span>);
-<a name="l00133"></a>00133 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00134"></a>00134 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00135"></a>00135 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_div"</span>);
-<a name="l00136"></a>00136 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00137"></a>00137 } <span class="comment">//if</span>
-<a name="l00138"></a>00138 } <span class="comment">//init</span>
-<a name="l00139"></a>00139 }; <span class="comment">// struct</span>
-<a name="l00140"></a>00140
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">//namespace kernels</span>
-<a name="l00143"></a>00143 } <span class="comment">//namespace linalg</span>
-<a name="l00144"></a>00144 } <span class="comment">//namespace viennacl</span>
-<a name="l00145"></a>00145 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__source_8h.html b/doc/doxygen/html/scalar__source_8h.html
deleted file mode 100644
index 1d72a57..0000000
--- a/doc/doxygen/html/scalar__source_8h.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="scalar__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> = " \n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/scalar__source_8h_source.html b/doc/doxygen/html/scalar__source_8h_source.html
deleted file mode 100644
index a21c692..0000000
--- a/doc/doxygen/html/scalar__source_8h_source.html
+++ /dev/null
@@ -1,254 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/scalar_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="scalar__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_SCALAR_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_SCALAR_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad4a92b9ae96ae6cb112fe4ead6e1c2b4">scalar_align1_inplace_sub</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">" \n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">" __global const float * val2) \n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"{ \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" *val1 -= *val2;\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"}\n"</span>
-<a name="l00019"></a>00019 <span class="stringliteral">" \n"</span>
-<a name="l00020"></a>00020 ; <span class="comment">//scalar_align1_inplace_sub</span>
-<a name="l00021"></a>00021
-<a name="l00022"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">00022</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#afdd42ae544513230e5fb3f3da1cc8dd1">scalar_align1_cpu_inplace_div</a> =
-<a name="l00023"></a>00023 <span class="stringliteral">" \n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">"__kernel void cpu_inplace_div(\n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" float val2) \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"{ \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" *val1 /= val2;\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">"}\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"\n"</span>
-<a name="l00032"></a>00032 <span class="stringliteral">" \n"</span>
-<a name="l00033"></a>00033 ; <span class="comment">//scalar_align1_cpu_inplace_div</span>
-<a name="l00034"></a>00034
-<a name="l00035"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">00035</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a58a8800fd41c5321dcce73e4308f2aef">scalar_align1_cpu_inplace_add</a> =
-<a name="l00036"></a>00036 <span class="stringliteral">" \n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">"__kernel void cpu_inplace_add(\n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" float val2) \n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"{ \n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" *val1 += val2;\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"}\n"</span>
-<a name="l00044"></a>00044 <span class="stringliteral">" \n"</span>
-<a name="l00045"></a>00045 ; <span class="comment">//scalar_align1_cpu_inplace_add</span>
-<a name="l00046"></a>00046
-<a name="l00047"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">00047</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0bad690dfcab5f50859def44e42ddd91">scalar_align1_cpu_sub</a> =
-<a name="l00048"></a>00048 <span class="stringliteral">" \n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">"__kernel void cpu_sub(\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" float val2, \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">"{ \n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">" *result = *val1 - val2;\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"}\n"</span>
-<a name="l00057"></a>00057 <span class="stringliteral">" \n"</span>
-<a name="l00058"></a>00058 ; <span class="comment">//scalar_align1_cpu_sub</span>
-<a name="l00059"></a>00059
-<a name="l00060"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">00060</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa5bda88a240ae932a07409a974af4532">scalar_align1_cpu_mul</a> =
-<a name="l00061"></a>00061 <span class="stringliteral">" \n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">"__kernel void cpu_mul(\n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" float val2, \n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">"{ \n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">" *result = *val1 * val2;\n"</span>
-<a name="l00069"></a>00069 <span class="stringliteral">"}\n"</span>
-<a name="l00070"></a>00070 <span class="stringliteral">" \n"</span>
-<a name="l00071"></a>00071 ; <span class="comment">//scalar_align1_cpu_mul</span>
-<a name="l00072"></a>00072
-<a name="l00073"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">00073</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7a813e983f09a4427d218a680274a054">scalar_align1_sub</a> =
-<a name="l00074"></a>00074 <span class="stringliteral">" \n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">" __global const float * val2, \n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">"{ \n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00081"></a>00081 <span class="stringliteral">" *result = *val1 - *val2;\n"</span>
-<a name="l00082"></a>00082 <span class="stringliteral">"}\n"</span>
-<a name="l00083"></a>00083 <span class="stringliteral">" \n"</span>
-<a name="l00084"></a>00084 ; <span class="comment">//scalar_align1_sub</span>
-<a name="l00085"></a>00085
-<a name="l00086"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">00086</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a596ae1eef52cc8e6ed6e68b9868cf8ed">scalar_align1_inplace_mul</a> =
-<a name="l00087"></a>00087 <span class="stringliteral">" \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"__kernel void inplace_mul(\n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" __global const float * val2) \n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">"{ \n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00093"></a>00093 <span class="stringliteral">" *val1 *= *val2;\n"</span>
-<a name="l00094"></a>00094 <span class="stringliteral">"}\n"</span>
-<a name="l00095"></a>00095 <span class="stringliteral">" \n"</span>
-<a name="l00096"></a>00096 ; <span class="comment">//scalar_align1_inplace_mul</span>
-<a name="l00097"></a>00097
-<a name="l00098"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">00098</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8402d8e4dc09b0b2595f5d7ffd8257a8">scalar_align1_cpu_inplace_mul</a> =
-<a name="l00099"></a>00099 <span class="stringliteral">" \n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"__kernel void cpu_inplace_mul(\n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" float val2) \n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"{ \n"</span>
-<a name="l00104"></a>00104 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00105"></a>00105 <span class="stringliteral">" *val1 *= val2;\n"</span>
-<a name="l00106"></a>00106 <span class="stringliteral">"}\n"</span>
-<a name="l00107"></a>00107 <span class="stringliteral">" \n"</span>
-<a name="l00108"></a>00108 ; <span class="comment">//scalar_align1_cpu_inplace_mul</span>
-<a name="l00109"></a>00109
-<a name="l00110"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">00110</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ab8e34ee4c364b0221730c266219f8557">scalar_align1_mul</a> =
-<a name="l00111"></a>00111 <span class="stringliteral">" \n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">"__kernel void mul(\n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" __global const float * val2, \n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">"{ \n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00118"></a>00118 <span class="stringliteral">" *result = *val1 * *val2;\n"</span>
-<a name="l00119"></a>00119 <span class="stringliteral">"}\n"</span>
-<a name="l00120"></a>00120 <span class="stringliteral">" \n"</span>
-<a name="l00121"></a>00121 ; <span class="comment">//scalar_align1_mul</span>
-<a name="l00122"></a>00122
-<a name="l00123"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">00123</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad39daaa59a1ce4c7e8179b039f15ab88">scalar_align1_cpu_add</a> =
-<a name="l00124"></a>00124 <span class="stringliteral">" \n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"__kernel void cpu_add(\n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" float val2, \n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"{ \n"</span>
-<a name="l00130"></a>00130 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00131"></a>00131 <span class="stringliteral">" *result = *val1 + val2;\n"</span>
-<a name="l00132"></a>00132 <span class="stringliteral">"}\n"</span>
-<a name="l00133"></a>00133 <span class="stringliteral">" \n"</span>
-<a name="l00134"></a>00134 ; <span class="comment">//scalar_align1_cpu_add</span>
-<a name="l00135"></a>00135
-<a name="l00136"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">00136</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a99b5afe289c44e60b7e8b66fdff216f0">scalar_align1_inplace_div</a> =
-<a name="l00137"></a>00137 <span class="stringliteral">" \n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">"__kernel void inplace_div(\n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" __global const float * val2) \n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">"{ \n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">" *val1 /= *val2;\n"</span>
-<a name="l00144"></a>00144 <span class="stringliteral">"}\n"</span>
-<a name="l00145"></a>00145 <span class="stringliteral">" \n"</span>
-<a name="l00146"></a>00146 ; <span class="comment">//scalar_align1_inplace_div</span>
-<a name="l00147"></a>00147
-<a name="l00148"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">00148</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4134dce422026940aece28e05f122d7a">scalar_align1_add</a> =
-<a name="l00149"></a>00149 <span class="stringliteral">" \n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" __global const float * val2, \n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"{ \n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">" *result = *val1 + *val2;\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"}\n"</span>
-<a name="l00158"></a>00158 <span class="stringliteral">" \n"</span>
-<a name="l00159"></a>00159 ; <span class="comment">//scalar_align1_add</span>
-<a name="l00160"></a>00160
-<a name="l00161"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">00161</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5bf7e01714c3930370d605a6d232c2b9">scalar_align1_cpu_inplace_sub</a> =
-<a name="l00162"></a>00162 <span class="stringliteral">" \n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">"__kernel void cpu_inplace_sub(\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" float val2) \n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">"{ \n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" *val1 -= val2;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">"}\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" \n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"\n"</span>
-<a name="l00172"></a>00172 ; <span class="comment">//scalar_align1_cpu_inplace_sub</span>
-<a name="l00173"></a>00173
-<a name="l00174"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">00174</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a545f737c0552ff312a01b072097f92eb">scalar_align1_inplace_add</a> =
-<a name="l00175"></a>00175 <span class="stringliteral">" \n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" __global float * val1,\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" __global const float * val2) \n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">"{ \n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">" *val1 += *val2;\n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">"}\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" \n"</span>
-<a name="l00184"></a>00184 ; <span class="comment">//scalar_align1_inplace_add</span>
-<a name="l00185"></a>00185
-<a name="l00186"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">00186</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac0d464f4ce3e0ad1d271a7de50a229ae">scalar_align1_divide</a> =
-<a name="l00187"></a>00187 <span class="stringliteral">" \n"</span>
-<a name="l00188"></a>00188 <span class="stringliteral">"// note: 'div' seems to produce some name clashes with the OpenCL jit-compiler, thus using 'divide'\n"</span>
-<a name="l00189"></a>00189 <span class="stringliteral">"__kernel void divide(\n"</span>
-<a name="l00190"></a>00190 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" __global const float * val2, \n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">"{ \n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" *result = *val1 / *val2;\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">"}\n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"\n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" \n"</span>
-<a name="l00199"></a>00199 ; <span class="comment">//scalar_align1_divide</span>
-<a name="l00200"></a>00200
-<a name="l00201"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">00201</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a7b6cb3a8d98a1716a72eb015bac6da73">scalar_align1_cpu_div</a> =
-<a name="l00202"></a>00202 <span class="stringliteral">" \n"</span>
-<a name="l00203"></a>00203 <span class="stringliteral">"__kernel void cpu_div(\n"</span>
-<a name="l00204"></a>00204 <span class="stringliteral">" __global const float * val1,\n"</span>
-<a name="l00205"></a>00205 <span class="stringliteral">" float val2, \n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">"{ \n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" *result = *val1 / val2;\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">"}\n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">" \n"</span>
-<a name="l00212"></a>00212 ; <span class="comment">//scalar_align1_cpu_div</span>
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 } <span class="comment">//namespace kernels</span>
-<a name="l00215"></a>00215 } <span class="comment">//namespace linalg</span>
-<a name="l00216"></a>00216 } <span class="comment">//namespace viennacl</span>
-<a name="l00217"></a>00217 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1col__iteration.html b/doc/doxygen/html/structviennacl_1_1col__iteration.html
deleted file mode 100644
index c37e574..0000000
--- a/doc/doxygen/html/structviennacl_1_1col__iteration.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: col_iteration Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1col__iteration.html">col_iteration</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>col_iteration Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::col_iteration" -->
-<p>A tag indicating iteration along increasing columns index of a matrix.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag indicating iteration along increasing columns index of a matrix. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1column__major.html b/doc/doxygen/html/structviennacl_1_1column__major.html
deleted file mode 100644
index dc1d792..0000000
--- a/doc/doxygen/html/structviennacl_1_1column__major.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: column_major Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1column__major.html">column_major</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>column_major Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::column_major" -->
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html#abf70953c0d567f696a5dc4d3a75d9881">mem_index</a> (unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the memory offset for entry (i,j) of a dense matrix. <a href="#abf70953c0d567f696a5dc4d3a75d9881"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a> (unsigned int rows, unsigned int alignment)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1column__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a> (unsigned int cols, unsigned int alignment)</td></tr>
-</table>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a285614b7315f207587dd60ebcc1e56e5"></a><!-- doxytag: member="viennacl::column_major::internal_size1" ref="a285614b7315f207587dd60ebcc1e56e5" args="(unsigned int rows, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static unsigned int internal_size1 </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>alignment</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af807a6cf25c4bd0b3f62e17e2b90f2c1"></a><!-- doxytag: member="viennacl::column_major::internal_size2" ref="af807a6cf25c4bd0b3f62e17e2b90f2c1" args="(unsigned int cols, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static unsigned int internal_size2 </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>cols</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>alignment</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf70953c0d567f696a5dc4d3a75d9881"></a><!-- doxytag: member="viennacl::column_major::mem_index" ref="abf70953c0d567f696a5dc4d3a75d9881" args="(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static unsigned int mem_index </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>j</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>num_rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>num_cols</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the memory offset for entry (i,j) of a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>row index </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>j</em> </td><td>column index </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>num_rows</em> </td><td>number of entries per row (including alignment) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>num_cols</em> </td><td>number of entries per column (including alignment) </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type.html b/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type.html
deleted file mode 100644
index 4bf296e..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: first_letter_of_type< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html">first_letter_of_type< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>first_letter_of_type< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::first_letter_of_type" -->
-<p>Helper meta class that returns the first letter of a particular type (float or double).
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type.html#aa44c884075e7f0158bc2c09528227af0">get</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::io::first_letter_of_type< T ></h3>
-
-<p>Helper meta class that returns the first letter of a particular type (float or double). </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa44c884075e7f0158bc2c09528227af0"></a><!-- doxytag: member="viennacl::io::first_letter_of_type::get" ref="aa44c884075e7f0158bc2c09528227af0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static char get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html
deleted file mode 100644
index 36017a7..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: first_letter_of_type< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html">first_letter_of_type< double ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>first_letter_of_type< double > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::first_letter_of_type< double >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01double_01_4.html#aa44c884075e7f0158bc2c09528227af0">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::first_letter_of_type< double ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa44c884075e7f0158bc2c09528227af0"></a><!-- doxytag: member="viennacl::io::first_letter_of_type< double >::get" ref="aa44c884075e7f0158bc2c09528227af0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static char get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html
deleted file mode 100644
index c6bdc2b..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: first_letter_of_type< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html">first_letter_of_type< float ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>first_letter_of_type< float > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::first_letter_of_type< float >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1first__letter__of__type_3_01float_01_4.html#aa44c884075e7f0158bc2c09528227af0">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::first_letter_of_type< float ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa44c884075e7f0158bc2c09528227af0"></a><!-- doxytag: member="viennacl::io::first_letter_of_type< float >::get" ref="aa44c884075e7f0158bc2c09528227af0" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static char get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1parameter__database.html b/doc/doxygen/html/structviennacl_1_1io_1_1parameter__database.html
deleted file mode 100644
index 66ba099..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1parameter__database.html
+++ /dev/null
@@ -1,425 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: parameter_database Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-methods">Public Member Functions</a> |
-<a href="#pub-attribs">Data Fields</a> </div>
- <div class="headertitle">
-<h1>parameter_database Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::parameter_database" -->
-<p>A XML parameter database using PugiXML. Allows to add tests for different devices and the like.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-methods"></a>
-Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab4a2fcf734630c9363badbfd4205053a">parameter_database</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a94640ee3f014f43e802e3bb26e40bc19">add_device</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad8c7260fd6a9b708e5da662b295206b8">add_test</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ad95fb4cdb80c4e90c51a031b77302711">add_kernel</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a36e505990b93973addc58a7ea20b2c0d">add_parameter</a> ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename ValueT > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab298617c087c245561aa3911f1a04989">add_data_node</a> (std::string tagstr, ValueT data)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a6704481b4c6d8ee327a1250dadc3ea2a">add_data_node</a> (std::string tagstr, std::string data)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a8e1b7829ae19153197f38719ce73fb67">load</a> (std::string filename)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afe9b5c984fb20d9be09fb29c01afb21d">dump</a> (std::string filename)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#afd80b88d872b6d3dec066c52f2ccc5de">dump</a> (std::ostream &stream=std::cout)</td></tr>
-<tr><td colspan="2"><h2><a name="pub-attribs"></a>
-Data Fields</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_document </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">pugi::xml_node </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A XML parameter database using PugiXML. Allows to add tests for different devices and the like. </p>
-<hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="ab4a2fcf734630c9363badbfd4205053a"></a><!-- doxytag: member="viennacl::io::parameter_database::parameter_database" ref="ab4a2fcf734630c9363badbfd4205053a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="structviennacl_1_1io_1_1parameter__database.html">parameter_database</a> </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ab298617c087c245561aa3911f1a04989"></a><!-- doxytag: member="viennacl::io::parameter_database::add_data_node" ref="ab298617c087c245561aa3911f1a04989" args="(std::string tagstr, ValueT data)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_data_node </td>
- <td>(</td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>tagstr</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">ValueT </td>
- <td class="paramname"> <em>data</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a6704481b4c6d8ee327a1250dadc3ea2a"></a><!-- doxytag: member="viennacl::io::parameter_database::add_data_node" ref="a6704481b4c6d8ee327a1250dadc3ea2a" args="(std::string tagstr, std::string data)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_data_node </td>
- <td>(</td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>tagstr</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>data</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a94640ee3f014f43e802e3bb26e40bc19"></a><!-- doxytag: member="viennacl::io::parameter_database::add_device" ref="a94640ee3f014f43e802e3bb26e40bc19" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_device </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad95fb4cdb80c4e90c51a031b77302711"></a><!-- doxytag: member="viennacl::io::parameter_database::add_kernel" ref="ad95fb4cdb80c4e90c51a031b77302711" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_kernel </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a36e505990b93973addc58a7ea20b2c0d"></a><!-- doxytag: member="viennacl::io::parameter_database::add_parameter" ref="a36e505990b93973addc58a7ea20b2c0d" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_parameter </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ad8c7260fd6a9b708e5da662b295206b8"></a><!-- doxytag: member="viennacl::io::parameter_database::add_test" ref="ad8c7260fd6a9b708e5da662b295206b8" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void add_test </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afe9b5c984fb20d9be09fb29c01afb21d"></a><!-- doxytag: member="viennacl::io::parameter_database::dump" ref="afe9b5c984fb20d9be09fb29c01afb21d" args="(std::string filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void dump </td>
- <td>(</td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>filename</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afd80b88d872b6d3dec066c52f2ccc5de"></a><!-- doxytag: member="viennacl::io::parameter_database::dump" ref="afd80b88d872b6d3dec066c52f2ccc5de" args="(std::ostream &stream=std::cout)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void dump </td>
- <td>(</td>
- <td class="paramtype">std::ostream & </td>
- <td class="paramname"> <em>stream</em> = <code>std::cout</code></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8e1b7829ae19153197f38719ce73fb67"></a><!-- doxytag: member="viennacl::io::parameter_database::load" ref="a8e1b7829ae19153197f38719ce73fb67" args="(std::string filename)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void load </td>
- <td>(</td>
- <td class="paramtype">std::string </td>
- <td class="paramname"> <em>filename</em></td>
- <td> ) </td>
- <td><code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/><h2>Field Documentation</h2>
-<a class="anchor" id="acd3f31f4a5aaba12eebad965d6ce75d9"></a><!-- doxytag: member="viennacl::io::parameter_database::devices" ref="acd3f31f4a5aaba12eebad965d6ce75d9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#acd3f31f4a5aaba12eebad965d6ce75d9">devices</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a5a2e3cc6c46af9e1eb2473ba5c05b001"></a><!-- doxytag: member="viennacl::io::parameter_database::devices_open" ref="a5a2e3cc6c46af9e1eb2473ba5c05b001" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a5a2e3cc6c46af9e1eb2473ba5c05b001">devices_open</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="addf5f92d6f325c77e4bb1750c8397c20"></a><!-- doxytag: member="viennacl::io::parameter_database::doc" ref="addf5f92d6f325c77e4bb1750c8397c20" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">pugi::xml_document <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#addf5f92d6f325c77e4bb1750c8397c20">doc</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa554c2c7a6130d370fca7ea0f5b823e9"></a><!-- doxytag: member="viennacl::io::parameter_database::kernels" ref="aa554c2c7a6130d370fca7ea0f5b823e9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa554c2c7a6130d370fca7ea0f5b823e9">kernels</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac7fc3c25e70d9d19f649c5d92fb5eee4"></a><!-- doxytag: member="viennacl::io::parameter_database::kernels_open" ref="ac7fc3c25e70d9d19f649c5d92fb5eee4" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac7fc3c25e70d9d19f649c5d92fb5eee4">kernels_open</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2fd4b22200fdf58426eb7a194733a395"></a><!-- doxytag: member="viennacl::io::parameter_database::last" ref="a2fd4b22200fdf58426eb7a194733a395" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2fd4b22200fdf58426eb7a194733a395">last</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ab21bd7aeadc22e8f46c3e7b683e90c95"></a><!-- doxytag: member="viennacl::io::parameter_database::parameters" ref="ab21bd7aeadc22e8f46c3e7b683e90c95" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ab21bd7aeadc22e8f46c3e7b683e90c95">parameters</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a2696ceb01771609859e796101433b1b8"></a><!-- doxytag: member="viennacl::io::parameter_database::parameters_open" ref="a2696ceb01771609859e796101433b1b8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#a2696ceb01771609859e796101433b1b8">parameters_open</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ace6133f70085dd8835a5ad866251b437"></a><!-- doxytag: member="viennacl::io::parameter_database::root" ref="ace6133f70085dd8835a5ad866251b437" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ace6133f70085dd8835a5ad866251b437">root</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ac650b8c949de44f0b33f978316a78ae7"></a><!-- doxytag: member="viennacl::io::parameter_database::tests" ref="ac650b8c949de44f0b33f978316a78ae7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">pugi::xml_node <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#ac650b8c949de44f0b33f978316a78ae7">tests</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aa27b43e24c4d69392cde0a29b9f71f9e"></a><!-- doxytag: member="viennacl::io::parameter_database::tests_open" ref="aa27b43e24c4d69392cde0a29b9f71f9e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">bool <a class="el" href="structviennacl_1_1io_1_1parameter__database.html#aa27b43e24c4d69392cde0a29b9f71f9e">tests_open</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype.html
deleted file mode 100644
index dee2978..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html">program_for_vcltype< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>program_for_vcltype< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::io::program_for_vcltype< T ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index a3aed36..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::compressed_matrix< T, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html
deleted file mode 100644
index 011a664..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html">program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01column__major_0c674580dad1886015b98b81609721f35.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::matrix< T, column_major, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index 9b39407..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1matrix_3_01_t_00_01row__major_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::matrix< T, row_major, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
deleted file mode 100644
index 6652674..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: program_for_vcltype< viennacl::vector< T, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html">program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>program_for_vcltype< viennacl::vector< T, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::program_for_vcltype< viennacl::vector< T, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1program__for__vcltype_3_01viennacl_1_1vector_3_01_t_00_01_a_l_i_g_n_m_e_n_t_01_4_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<typename T, unsigned int ALIGNMENT><br/>
- struct viennacl::io::program_for_vcltype< viennacl::vector< T, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::program_for_vcltype< viennacl::vector< T, ALIGNMENT > >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1to__string.html b/doc/doxygen/html/structviennacl_1_1io_1_1to__string.html
deleted file mode 100644
index 05df7ef..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1to__string.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: to_string< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1to__string.html">to_string< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>to_string< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::to_string" -->
-<p>Helper meta-class that converts a type to a string.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::io::to_string< T ></h3>
-
-<p>Helper meta-class that converts a type to a string. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01double_01_4.html
deleted file mode 100644
index e4a13ce..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01double_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: to_string< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html">to_string< double ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>to_string< double > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::to_string< double >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01double_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::to_string< double ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::to_string< double >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01float_01_4.html
deleted file mode 100644
index 37c7aa1..0000000
--- a/doc/doxygen/html/structviennacl_1_1io_1_1to__string_3_01float_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: to_string< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1io.html">io</a> </li>
- <li><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html">to_string< float ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>to_string< float > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::io::to_string< float >" -->
-<p><code>#include <<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1io_1_1to__string_3_01float_01_4.html#a8eb62a380fed2d733fde5168170eea12">get</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::io::to_string< float ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8eb62a380fed2d733fde5168170eea12"></a><!-- doxytag: member="viennacl::io::to_string< float >::get" ref="a8eb62a380fed2d733fde5168170eea12" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string get </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/io/<a class="el" href="kernel__parameters_8hpp_source.html">kernel_parameters.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__eigen.html b/doc/doxygen/html/structviennacl_1_1is__eigen.html
deleted file mode 100644
index 06100c9..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__eigen.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_eigen< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_eigen< Tag > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_eigen" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">value</a> = false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_eigen< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a99fb83031ce9923c84392b4e92f956b5"></a><!-- doxytag: member="viennacl::is_eigen::@2" ref="a99fb83031ce9923c84392b4e92f956b5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html b/doc/doxygen/html/structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html
deleted file mode 100644
index 747afdd..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_eigen< viennacl::tag_eigen > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_eigen< viennacl::tag_eigen > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_eigen< viennacl::tag_eigen >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">value</a> = true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_eigen< viennacl::tag_eigen ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="abc6126af1d45847bc59afa0aa3216b04"></a><!-- doxytag: member="viennacl::is_eigen< viennacl::tag_eigen >::@3" ref="abc6126af1d45847bc59afa0aa3216b04" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__mtl4.html b/doc/doxygen/html/structviennacl_1_1is__mtl4.html
deleted file mode 100644
index 95f808f..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__mtl4.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_mtl4< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_mtl4< Tag > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_mtl4" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">value</a> = false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_mtl4< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55b"></a><!-- doxytag: member="viennacl::is_mtl4::@0" ref="a06fc87d81c62e9abb8790b6e5713c55b" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html b/doc/doxygen/html/structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html
deleted file mode 100644
index 9f53031..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_mtl4< viennacl::tag_mtl4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_mtl4< viennacl::tag_mtl4 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_mtl4< viennacl::tag_mtl4 >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">value</a> = true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_mtl4< viennacl::tag_mtl4 ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="adf764cbdea00d65edcd07bb9953ad2b7"></a><!-- doxytag: member="viennacl::is_mtl4< viennacl::tag_mtl4 >::@1" ref="adf764cbdea00d65edcd07bb9953ad2b7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__stl.html b/doc/doxygen/html/structviennacl_1_1is__stl.html
deleted file mode 100644
index 54e8006..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__stl.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_stl< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_stl< Tag > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_stl" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">value</a> = false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_stl< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a726ca809ffd3d67ab4b8476646f26635"></a><!-- doxytag: member="viennacl::is_stl::@6" ref="a726ca809ffd3d67ab4b8476646f26635" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html b/doc/doxygen/html/structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html
deleted file mode 100644
index 976cba8..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_stl< viennacl::tag_stl > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_stl< viennacl::tag_stl > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_stl< viennacl::tag_stl >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">value</a> = true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_stl< viennacl::tag_stl ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a0411cd49bb5b71852cecd93bcbf0ca2d"></a><!-- doxytag: member="viennacl::is_stl< viennacl::tag_stl >::@7" ref="a0411cd49bb5b71852cecd93bcbf0ca2d" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__ublas.html b/doc/doxygen/html/structviennacl_1_1is__ublas.html
deleted file mode 100644
index e7841bf..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__ublas.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_ublas< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_ublas< Tag > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_ublas" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">value</a> = false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_ublas< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="adc29c2ff13d900c2f185ee95427fb06c"></a><!-- doxytag: member="viennacl::is_ublas::@4" ref="adc29c2ff13d900c2f185ee95427fb06c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html b/doc/doxygen/html/structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html
deleted file mode 100644
index f8ab86a..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_ublas< viennacl::tag_ublas > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_ublas< viennacl::tag_ublas > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_ublas< viennacl::tag_ublas >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">value</a> = true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_ublas< viennacl::tag_ublas ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="a61dadd085c1777f559549e05962b2c9e"></a><!-- doxytag: member="viennacl::is_ublas< viennacl::tag_ublas >::@5" ref="a61dadd085c1777f559549e05962b2c9e" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__viennacl.html b/doc/doxygen/html/structviennacl_1_1is__viennacl.html
deleted file mode 100644
index 77f9451..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__viennacl.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_viennacl< Tag > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_viennacl< Tag > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_viennacl" -->
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">value</a> = false
- }</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename Tag><br/>
- struct viennacl::is_viennacl< Tag ></h3>
-
-<p>Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>. </p>
-<p>This is an internal function only, there is no need for a library user of ViennaCL to care about it any further </p>
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="abed82baf7f470b522273a3e37c24c600"></a><!-- doxytag: member="viennacl::is_viennacl::@8" ref="abed82baf7f470b522273a3e37c24c600" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html b/doc/doxygen/html/structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html
deleted file mode 100644
index a127273..0000000
--- a/doc/doxygen/html/structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: is_viennacl< viennacl::tag_viennacl > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>is_viennacl< viennacl::tag_viennacl > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::is_viennacl< viennacl::tag_viennacl >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom">{ <a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">value</a> = true
- }</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::is_viennacl< viennacl::tag_viennacl ></h3>
-
-<hr/><h2>Member Enumeration Documentation</h2>
-<a class="anchor" id="ab04a0655cd1e3bcac5e8f48c18df1a57"></a><!-- doxytag: member="viennacl::is_viennacl< viennacl::tag_viennacl >::@9" ref="ab04a0655cd1e3bcac5e8f48c18df1a57" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">anonymous enum</td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
-<tr><td valign="top"><em><a class="anchor" id="ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9"></a><!-- doxytag: member="value" ref="ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9" args="" -->value</em> </td><td>
-</td></tr>
-</table>
-</dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html
deleted file mode 100644
index de10500..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html">compressed_matrix< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>compressed_matrix< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< double, 1 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html
deleted file mode 100644
index b2aa675..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< double, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html">compressed_matrix< double, 4 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>compressed_matrix< double, 4 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< double, 4 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< double, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html
deleted file mode 100644
index 1d678d2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< double, 8 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html">compressed_matrix< double, 8 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>compressed_matrix< double, 8 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< double, 8 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01double_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< double, 8 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 8 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< double, 8 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html
deleted file mode 100644
index 1c0cb4c..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html">compressed_matrix< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>compressed_matrix< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< float, 1 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html
deleted file mode 100644
index 558ac7c..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< float, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html">compressed_matrix< float, 4 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>compressed_matrix< float, 4 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< float, 4 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< float, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html
deleted file mode 100644
index be88be0..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: compressed_matrix< float, 8 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html">compressed_matrix< float, 8 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>compressed_matrix< float, 8 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::compressed_matrix< float, 8 >" -->
-<p><code>#include <<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1compressed__matrix_3_01float_00_018_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::compressed_matrix< float, 8 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 8 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::compressed_matrix< float, 8 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="compressed__matrix__kernels_8h_source.html">compressed_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html
deleted file mode 100644
index 5288c41..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< double, 128 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html">coordinate_matrix< double, 128 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>coordinate_matrix< double, 128 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< double, 128 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< double, 128 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 128 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 128 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html
deleted file mode 100644
index 69aa883..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html">coordinate_matrix< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>coordinate_matrix< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< double, 1 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html
deleted file mode 100644
index 1406541..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< float, 128 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html">coordinate_matrix< float, 128 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>coordinate_matrix< float, 128 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< float, 128 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_01128_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< float, 128 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 128 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 128 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html
deleted file mode 100644
index 4b5c6e4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: coordinate_matrix< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html">coordinate_matrix< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>coordinate_matrix< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::coordinate_matrix< float, 1 >" -->
-<p><code>#include <<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1coordinate__matrix_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::coordinate_matrix< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::coordinate_matrix< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="coordinate__matrix__kernels_8h_source.html">coordinate_matrix_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html
deleted file mode 100644
index 3793de7..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< double, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html">matrix_col< double, 16 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_col< double, 16 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< double, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< double, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 96a4cdb..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html">matrix_col< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_col< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html
deleted file mode 100644
index f66b724..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< float, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html">matrix_col< float, 16 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_col< float, 16 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< float, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< float, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 7ce44ac..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html">matrix_col< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_col< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__col__kernels_8h_source.html">matrix_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html
deleted file mode 100644
index c23d4ba..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html">matrix_prod_col_col_col< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_col_col< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 2dc1462..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html">matrix_prod_col_col_col< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_col_col< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__col__kernels_8h_source.html">matrix_prod_col_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 5763767..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html">matrix_prod_col_col_row< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_col_row< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html
deleted file mode 100644
index 6311af0..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_col_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html">matrix_prod_col_col_row< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_col_row< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_col_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__col__row__kernels_8h_source.html">matrix_prod_col_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html
deleted file mode 100644
index b898a40..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html">matrix_prod_col_row_col< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_row_col< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html
deleted file mode 100644
index fcb5193..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html">matrix_prod_col_row_col< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_row_col< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__col__kernels_8h_source.html">matrix_prod_col_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 713c344..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html">matrix_prod_col_row_row< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_row_row< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html
deleted file mode 100644
index dffd72a..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_col_row_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html">matrix_prod_col_row_row< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_col_row_row< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__col__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_col_row_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__col__row__row__kernels_8h_source.html">matrix_prod_col_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 6cafcd4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html">matrix_prod_row_col_col< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_col_col< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html
deleted file mode 100644
index e415de6..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html">matrix_prod_row_col_col< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_col_col< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__col__kernels_8h_source.html">matrix_prod_row_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 90c3a9c..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html">matrix_prod_row_col_row< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_col_row< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html
deleted file mode 100644
index 1324d30..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_col_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html">matrix_prod_row_col_row< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_col_row< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_col_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__col__row__kernels_8h_source.html">matrix_prod_row_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 2e46b2b..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html">matrix_prod_row_row_col< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_row_col< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 54f90d4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html">matrix_prod_row_row_col< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_row_col< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__col__kernels_8h_source.html">matrix_prod_row_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 49e739f..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html">matrix_prod_row_row_row< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_row_row< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html
deleted file mode 100644
index cca4572..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_prod_row_row_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html">matrix_prod_row_row_row< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_prod_row_row_row< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__prod__row__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_prod_row_row_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__prod__row__row__row__kernels_8h_source.html">matrix_prod_row_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html
deleted file mode 100644
index bc7b7df..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< double, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html">matrix_row< double, 16 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_row< double, 16 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< double, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< double, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html
deleted file mode 100644
index c7c58e2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html">matrix_row< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_row< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html
deleted file mode 100644
index e857d10..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< float, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html">matrix_row< float, 16 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_row< float, 16 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< float, 16 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< float, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html
deleted file mode 100644
index fd086a3..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html">matrix_row< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_row< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__row__kernels_8h_source.html">matrix_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html
deleted file mode 100644
index a01ac12..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html">matrix_solve_col_col< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_col_col< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html
deleted file mode 100644
index a466c2f..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html">matrix_solve_col_col< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_col_col< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__col__kernels_8h_source.html">matrix_solve_col_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html
deleted file mode 100644
index 9132f77..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html">matrix_solve_col_row< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_col_row< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html
deleted file mode 100644
index e3018e8..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_col_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html">matrix_solve_col_row< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_col_row< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_col_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__col__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_col_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_col_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__col__row__kernels_8h_source.html">matrix_solve_col_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html
deleted file mode 100644
index 06389b6..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_col< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html">matrix_solve_row_col< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_row_col< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_col< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_col< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html
deleted file mode 100644
index 5df8573..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_col< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html">matrix_solve_row_col< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_row_col< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_col< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__col_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_col< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_col< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__col__kernels_8h_source.html">matrix_solve_row_col_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html
deleted file mode 100644
index fe53ac2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_row< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html">matrix_solve_row_row< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_row_row< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_row< double, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_row< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html
deleted file mode 100644
index 599aa08..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: matrix_solve_row_row< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html">matrix_solve_row_row< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>matrix_solve_row_row< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::matrix_solve_row_row< float, 1 >" -->
-<p><code>#include <<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1matrix__solve__row__row_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::matrix_solve_row_row< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::matrix_solve_row_row< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="matrix__solve__row__row__kernels_8h_source.html">matrix_solve_row_row_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html
deleted file mode 100644
index 1e11461..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html">scalar< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>scalar< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::scalar< double, 1 >" -->
-<p><code>#include <<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::scalar< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html
deleted file mode 100644
index b4282e2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: scalar< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html">scalar< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>scalar< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::scalar< float, 1 >" -->
-<p><code>#include <<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1scalar_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::scalar< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::scalar< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="scalar__kernels_8h_source.html">scalar_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html
deleted file mode 100644
index ae5312b..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< double, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector< double, 16 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< double, 16 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< double, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html
deleted file mode 100644
index 9978e69..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< double, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector< double, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< double, 1 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< double, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html
deleted file mode 100644
index f0420ce..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< double, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector< double, 4 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< double, 4 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< double, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< double, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html
deleted file mode 100644
index 45165e2..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< float, 16 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector< float, 16 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< float, 16 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< float, 16 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 16 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 16 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html
deleted file mode 100644
index c531d53..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< float, 1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector< float, 1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< float, 1 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< float, 1 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 1 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 1 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html
deleted file mode 100644
index 302d8a7..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: vector< float, 4 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">kernels</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>vector< float, 4 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::kernels::vector< float, 4 >" -->
-<p><code>#include <<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">program_name</a> ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">init</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::linalg::kernels::vector< float, 4 ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aedc913c139bb562646d3459b0ca28997"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 4 >::init" ref="aedc913c139bb562646d3459b0ca28997" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void init </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adb4613919bae5cf962e40b99da83dd96"></a><!-- doxytag: member="viennacl::linalg::kernels::vector< float, 4 >::program_name" ref="adb4613919bae5cf962e40b99da83dd96" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static std::string program_name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/<a class="el" href="vector__kernels_8h_source.html">vector_kernels.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1lower__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1lower__tag.html
deleted file mode 100644
index 5307ec4..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1lower__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: lower_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html">lower_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>lower_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::lower_tag" -->
-<p>A tag class representing a lower triangular matrix.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing a lower triangular matrix. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::lower_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static const char* const name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__lower__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__lower__tag.html
deleted file mode 100644
index fa86fc1..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__lower__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: unit_lower_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html">unit_lower_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>unit_lower_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::unit_lower_tag" -->
-<p>A tag class representing a lower triangular matrix with unit diagonal.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__lower__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing a lower triangular matrix with unit diagonal. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::unit_lower_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static const char* const name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__upper__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__upper__tag.html
deleted file mode 100644
index 3fc771a..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1unit__upper__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: unit_upper_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html">unit_upper_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>unit_upper_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::unit_upper_tag" -->
-<p>A tag class representing an upper triangular matrix with unit diagonal.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1unit__upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing an upper triangular matrix with unit diagonal. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::unit_upper_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static const char* const name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1linalg_1_1upper__tag.html b/doc/doxygen/html/structviennacl_1_1linalg_1_1upper__tag.html
deleted file mode 100644
index b4c0d6e..0000000
--- a/doc/doxygen/html/structviennacl_1_1linalg_1_1upper__tag.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: upper_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1linalg.html">linalg</a> </li>
- <li><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html">upper_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>upper_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::linalg::upper_tag" -->
-<p>A tag class representing an upper triangular matrix.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1upper__tag.html#a645e1cadcf8551f0f14160001402854a">name</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag class representing an upper triangular matrix. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a645e1cadcf8551f0f14160001402854a"></a><!-- doxytag: member="viennacl::linalg::upper_tag::name" ref="a645e1cadcf8551f0f14160001402854a" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static const char* const name </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html
deleted file mode 100644
index 3220c60..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: DOUBLE_PRECISION_CHECKER< ScalarType > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>DOUBLE_PRECISION_CHECKER< ScalarType > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::DOUBLE_PRECISION_CHECKER" -->
-<p>Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="utils_8hpp_source.html">utils.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">apply</a> ()</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename ScalarType><br/>
- struct viennacl::ocl::DOUBLE_PRECISION_CHECKER< ScalarType ></h3>
-
-<p>Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acd62521bdbf7f991a885f126413e6f89"></a><!-- doxytag: member="viennacl::ocl::DOUBLE_PRECISION_CHECKER::apply" ref="acd62521bdbf7f991a885f126413e6f89" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void apply </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="utils_8hpp_source.html">utils.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html
deleted file mode 100644
index 100c479..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: DOUBLE_PRECISION_CHECKER< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>DOUBLE_PRECISION_CHECKER< double > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::DOUBLE_PRECISION_CHECKER< double >" -->
-<p><code>#include <<a class="el" href="utils_8hpp_source.html">utils.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">apply</a> ()</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::DOUBLE_PRECISION_CHECKER< double ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acd62521bdbf7f991a885f126413e6f89"></a><!-- doxytag: member="viennacl::ocl::DOUBLE_PRECISION_CHECKER< double >::apply" ref="acd62521bdbf7f991a885f126413e6f89" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void apply </td>
- <td>(</td>
- <td class="paramname"></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="utils_8hpp_source.html">utils.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1accelerator__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1accelerator__tag.html
deleted file mode 100644
index 860e5a4..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1accelerator__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: accelerator_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1accelerator__tag.html">accelerator_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>accelerator_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::accelerator_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1cpu__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1cpu__tag.html
deleted file mode 100644
index 2657e03..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1cpu__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: cpu_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1cpu__tag.html">cpu_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>cpu_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::cpu_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1default__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1default__tag.html
deleted file mode 100644
index ccd9253..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1default__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: default_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1default__tag.html">default_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>default_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::default_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1error__checker.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1error__checker.html
deleted file mode 100644
index aa44c37..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1error__checker.html
+++ /dev/null
@@ -1,138 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: error_checker< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html">error_checker< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>error_checker< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::error_checker" -->
-<p>An error reporting class. Template argument is used to avoid problems with external linkage.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="error_8hpp_source.html">error.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#a66cd47430f5f54a019185f6d21bcb334">raise_exception</a> (cl_int err)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Trows exceptions that reflect OpenCL error codes. <a href="#a66cd47430f5f54a019185f6d21bcb334"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1error__checker.html#af878a7ec14df24a0c55857513cd9555e">checkError</a> (cl_int err, const std::string &file, const std::string &func, int line)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether an OpenCL error has occured. <a href="#af878a7ec14df24a0c55857513cd9555e"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::ocl::error_checker< T ></h3>
-
-<p>An error reporting class. Template argument is used to avoid problems with external linkage. </p>
-<p>Do not use this class directly, use the macro CL_ERROR_CHECK instead. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>Useless. Helps to avoid troubles with external linkage of namespace functions. </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="af878a7ec14df24a0c55857513cd9555e"></a><!-- doxytag: member="viennacl::ocl::error_checker::checkError" ref="af878a7ec14df24a0c55857513cd9555e" args="(cl_int err, const std::string &file, const std::string &func, int line)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void checkError </td>
- <td>(</td>
- <td class="paramtype">cl_int </td>
- <td class="paramname"> <em>err</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>file</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"> <em>func</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">int </td>
- <td class="paramname"> <em>line</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Checks whether an OpenCL error has occured. </p>
-<p>Do not use this function directly, use the macro CL_ERROR_CHECK instead. </p>
-
-</div>
-</div>
-<a class="anchor" id="a66cd47430f5f54a019185f6d21bcb334"></a><!-- doxytag: member="viennacl::ocl::error_checker::raise_exception" ref="a66cd47430f5f54a019185f6d21bcb334" args="(cl_int err)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void raise_exception </td>
- <td>(</td>
- <td class="paramtype">cl_int </td>
- <td class="paramname"> <em>err</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Trows exceptions that reflect OpenCL error codes. </p>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="error_8hpp_source.html">error.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1gpu__tag.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1gpu__tag.html
deleted file mode 100644
index 6cd41d3..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1gpu__tag.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: gpu_tag Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1gpu__tag.html">gpu_tag</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>gpu_tag Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::gpu_tag" -->
-<p><code>#include <<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="ocl_2forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html
deleted file mode 100644
index 3539428..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_command_queue > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html">handle_inc_dec_helper< cl_command_queue ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_command_queue > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_command_queue >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#addb17e263480ba044f2c38997192344c">inc</a> (cl_command_queue &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__command__queue_01_4.html#abd0ea0583c2413dbfd45c14d33044258">dec</a> (cl_command_queue &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_command_queue ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="abd0ea0583c2413dbfd45c14d33044258"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_command_queue >::dec" ref="abd0ea0583c2413dbfd45c14d33044258" args="(cl_command_queue &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void dec </td>
- <td>(</td>
- <td class="paramtype">cl_command_queue & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="addb17e263480ba044f2c38997192344c"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_command_queue >::inc" ref="addb17e263480ba044f2c38997192344c" args="(cl_command_queue &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void inc </td>
- <td>(</td>
- <td class="paramtype">cl_command_queue & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html
deleted file mode 100644
index 32a8e43..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_context > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html">handle_inc_dec_helper< cl_context ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_context > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_context >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a006046d51819d0443dbf6426c4c89bd2">inc</a> (cl_context &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__context_01_4.html#a4bae375e232db0bdcd4a202b39c19816">dec</a> (cl_context &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_context ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a4bae375e232db0bdcd4a202b39c19816"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_context >::dec" ref="a4bae375e232db0bdcd4a202b39c19816" args="(cl_context &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void dec </td>
- <td>(</td>
- <td class="paramtype">cl_context & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a006046d51819d0443dbf6426c4c89bd2"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_context >::inc" ref="a006046d51819d0443dbf6426c4c89bd2" args="(cl_context &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void inc </td>
- <td>(</td>
- <td class="paramtype">cl_context & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html
deleted file mode 100644
index 23c5b76..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_kernel > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html">handle_inc_dec_helper< cl_kernel ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_kernel > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_kernel >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#afb9dc7b00575004c1144b3a990497a87">inc</a> (cl_kernel &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__kernel_01_4.html#a0fc901ecaa7b205e0e051c2f5d43d9f4">dec</a> (cl_kernel &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_kernel ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a0fc901ecaa7b205e0e051c2f5d43d9f4"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_kernel >::dec" ref="a0fc901ecaa7b205e0e051c2f5d43d9f4" args="(cl_kernel &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void dec </td>
- <td>(</td>
- <td class="paramtype">cl_kernel & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="afb9dc7b00575004c1144b3a990497a87"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_kernel >::inc" ref="afb9dc7b00575004c1144b3a990497a87" args="(cl_kernel &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void inc </td>
- <td>(</td>
- <td class="paramtype">cl_kernel & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html
deleted file mode 100644
index 8050b59..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_mem > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html">handle_inc_dec_helper< cl_mem ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_mem > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_mem >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#ae60134f01033d6efe66718eaf8435296">inc</a> (cl_mem &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__mem_01_4.html#a7e9e140199f7ba174f62477b2fb90366">dec</a> (cl_mem &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_mem ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a7e9e140199f7ba174f62477b2fb90366"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_mem >::dec" ref="a7e9e140199f7ba174f62477b2fb90366" args="(cl_mem &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void dec </td>
- <td>(</td>
- <td class="paramtype">cl_mem & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae60134f01033d6efe66718eaf8435296"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_mem >::inc" ref="ae60134f01033d6efe66718eaf8435296" args="(cl_mem &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void inc </td>
- <td>(</td>
- <td class="paramtype">cl_mem & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html b/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html
deleted file mode 100644
index 25c17c1..0000000
--- a/doc/doxygen/html/structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: handle_inc_dec_helper< cl_program > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1ocl.html">ocl</a> </li>
- <li><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html">handle_inc_dec_helper< cl_program ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>handle_inc_dec_helper< cl_program > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::ocl::handle_inc_dec_helper< cl_program >" -->
-<p><code>#include <<a class="el" href="handle_8hpp_source.html">handle.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#aea5d3b62ea9f881b45651e6a7d842fed">inc</a> (cl_program &something)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1handle__inc__dec__helper_3_01cl__program_01_4.html#a8a5c0f9dc62b768106e52e66b79aa4b9">dec</a> (cl_program &something)</td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::ocl::handle_inc_dec_helper< cl_program ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a8a5c0f9dc62b768106e52e66b79aa4b9"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_program >::dec" ref="a8a5c0f9dc62b768106e52e66b79aa4b9" args="(cl_program &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void dec </td>
- <td>(</td>
- <td class="paramtype">cl_program & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="aea5d3b62ea9f881b45651e6a7d842fed"></a><!-- doxytag: member="viennacl::ocl::handle_inc_dec_helper< cl_program >::inc" ref="aea5d3b62ea9f881b45651e6a7d842fed" args="(cl_program &something)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void inc </td>
- <td>(</td>
- <td class="paramtype">cl_program & </td>
- <td class="paramname"> <em>something</em></td>
- <td> ) </td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/<a class="el" href="handle_8hpp_source.html">handle.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1row__iteration.html b/doc/doxygen/html/structviennacl_1_1row__iteration.html
deleted file mode 100644
index ad39127..0000000
--- a/doc/doxygen/html/structviennacl_1_1row__iteration.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_iteration Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1row__iteration.html">row_iteration</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>row_iteration Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::row_iteration" -->
-<p>A tag indicating iteration along increasing row index of a matrix.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag indicating iteration along increasing row index of a matrix. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1row__major.html b/doc/doxygen/html/structviennacl_1_1row__major.html
deleted file mode 100644
index ab8d5c6..0000000
--- a/doc/doxygen/html/structviennacl_1_1row__major.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: row_major Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1row__major.html">row_major</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>row_major Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::row_major" -->
-<p>A tag for row-major storage of a dense matrix.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html#abf70953c0d567f696a5dc4d3a75d9881">mem_index</a> (unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the memory offset for entry (i,j) of a dense matrix. <a href="#abf70953c0d567f696a5dc4d3a75d9881"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html#a285614b7315f207587dd60ebcc1e56e5">internal_size1</a> (unsigned int rows, unsigned int alignment)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1row__major.html#af807a6cf25c4bd0b3f62e17e2b90f2c1">internal_size2</a> (unsigned int cols, unsigned int alignment)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>A tag for row-major storage of a dense matrix. </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a285614b7315f207587dd60ebcc1e56e5"></a><!-- doxytag: member="viennacl::row_major::internal_size1" ref="a285614b7315f207587dd60ebcc1e56e5" args="(unsigned int rows, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static unsigned int internal_size1 </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>alignment</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="af807a6cf25c4bd0b3f62e17e2b90f2c1"></a><!-- doxytag: member="viennacl::row_major::internal_size2" ref="af807a6cf25c4bd0b3f62e17e2b90f2c1" args="(unsigned int cols, unsigned int alignment)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static unsigned int internal_size2 </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>cols</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>alignment</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="abf70953c0d567f696a5dc4d3a75d9881"></a><!-- doxytag: member="viennacl::row_major::mem_index" ref="abf70953c0d567f696a5dc4d3a75d9881" args="(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static unsigned int mem_index </td>
- <td>(</td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>i</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>j</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>num_rows</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int </td>
- <td class="paramname"> <em>num_cols</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-<p>Returns the memory offset for entry (i,j) of a dense matrix. </p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>i</em> </td><td>row index </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>j</em> </td><td>column index </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>num_rows</em> </td><td>number of entries per row (including alignment) </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>num_cols</em> </td><td>number of entries per column (including alignment) </td></tr>
- </table>
- </dd>
-</dl>
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="matrix_8hpp_source.html">matrix.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__eigen.html b/doc/doxygen/html/structviennacl_1_1tag__eigen.html
deleted file mode 100644
index 1d0294b..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__eigen.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_eigen Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>tag_eigen Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_eigen" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__mtl4.html b/doc/doxygen/html/structviennacl_1_1tag__mtl4.html
deleted file mode 100644
index 70a6956..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__mtl4.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_mtl4 Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>tag_mtl4 Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_mtl4" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__none.html b/doc/doxygen/html/structviennacl_1_1tag__none.html
deleted file mode 100644
index f3de6de..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__none.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_none Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>tag_none Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_none" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__stl.html b/doc/doxygen/html/structviennacl_1_1tag__stl.html
deleted file mode 100644
index f14dc9d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__stl.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_stl Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>tag_stl Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_stl" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__ublas.html b/doc/doxygen/html/structviennacl_1_1tag__ublas.html
deleted file mode 100644
index 5b3c361..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__ublas.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_ublas Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>tag_ublas Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_ublas" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tag__viennacl.html b/doc/doxygen/html/structviennacl_1_1tag__viennacl.html
deleted file mode 100644
index e846d3c..0000000
--- a/doc/doxygen/html/structviennacl_1_1tag__viennacl.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_viennacl Struct Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>tag_viennacl Struct Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tag_viennacl" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html
deleted file mode 100644
index 688d2d6..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CHECK_SCALAR_TEMPLATE_ARGUMENT< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CHECK_SCALAR_TEMPLATE_ARGUMENT< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT" -->
-<p>A guard that checks whether the floating point type of GPU types is either float or double.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-T::ERROR_SCALAR_MUST_HAVE_TEMPLATE_ARGUMENT_FLOAT_OR_DOUBLE </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">ResultType</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></h3>
-
-<p>A guard that checks whether the floating point type of GPU types is either float or double. </p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a465b19472e9fa1cbd9bbd334947c6042"></a><!-- doxytag: member="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT::ResultType" ref="a465b19472e9fa1cbd9bbd334947c6042" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T::ERROR_SCALAR_MUST_HAVE_TEMPLATE_ARGUMENT_FLOAT_OR_DOUBLE <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html
deleted file mode 100644
index a5f8ab7..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CHECK_SCALAR_TEMPLATE_ARGUMENT< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CHECK_SCALAR_TEMPLATE_ARGUMENT< double > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< double >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef double </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9a1247a9213f552c041fd48cbd89042c"></a><!-- doxytag: member="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< double >::ResultType" ref="a9a1247a9213f552c041fd48cbd89042c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef double <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html
deleted file mode 100644
index 0e30f00..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CHECK_SCALAR_TEMPLATE_ARGUMENT< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CHECK_SCALAR_TEMPLATE_ARGUMENT< float > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< float >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef float </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae663109a95092b45704754292ae4f4c0"></a><!-- doxytag: member="viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT< float >::ResultType" ref="ae663109a95092b45704754292ae4f4c0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef float <a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html
deleted file mode 100644
index 8baccdb..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CONST_REMOVER< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CONST_REMOVER< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CONST_REMOVER" -->
-<p>Removes the const qualifier from a type.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::tools::CONST_REMOVER< T ></h3>
-
-<p>Removes the const qualifier from a type. </p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CONST_REMOVER::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html
deleted file mode 100644
index b39ef84..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CONST_REMOVER< const T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CONST_REMOVER< const T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CONST_REMOVER< const T >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::tools::CONST_REMOVER< const T ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CONST_REMOVER< const T >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html
deleted file mode 100644
index 7b260be..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER" -->
-<p>Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename T><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< T ></h3>
-
-<p>Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T> </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>Either a CPU scalar type or a GPU scalar type </td></tr>
- </table>
- </dd>
-</dl>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html
deleted file mode 100644
index 2488c36..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< double > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< double > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< double >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef double </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< double ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9a1247a9213f552c041fd48cbd89042c"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< double >::ResultType" ref="a9a1247a9213f552c041fd48cbd89042c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef double <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html
deleted file mode 100644
index aa1dadb..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< float > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< float > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< float >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef float </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td></tr>
-</table>
-<h3>template<><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< float ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae663109a95092b45704754292ae4f4c0"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< float >::ResultType" ref="ae663109a95092b45704754292ae4f4c0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef float <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html
deleted file mode 100644
index b524ebe..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T, typename F, unsigned int A><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html
deleted file mode 100644
index b4cfde2..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T, typename F, unsigned int A><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html
deleted file mode 100644
index 7e3a3ee..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html
deleted file mode 100644
index a002cc9..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int A><br/>
- struct viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a13d3ccc8836027e5b399582861553350"></a><!-- doxytag: member="viennacl::tools::CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > >::ResultType" ref="a13d3ccc8836027e5b399582861553350" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html
deleted file mode 100644
index ea086e4..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_ITERATOR_INCREMENTER" -->
-<p><code>#include <<a class="el" href="forwards_8h_source.html">forwards.h</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html#a020757b8af66b1f9ba27fd6467ccab00">apply</a> (const MATRIXTYPE &mat, unsigned int &row, unsigned int &col)</td></tr>
-</table>
-<h3>template<typename ROWCOL, typename MATRIXTYPE><br/>
- struct viennacl::tools::MATRIX_ITERATOR_INCREMENTER< ROWCOL, MATRIXTYPE ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a020757b8af66b1f9ba27fd6467ccab00"></a><!-- doxytag: member="viennacl::tools::MATRIX_ITERATOR_INCREMENTER::apply" ref="a020757b8af66b1f9ba27fd6467ccab00" args="(const MATRIXTYPE &mat, unsigned int &row, unsigned int &col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void apply </td>
- <td>(</td>
- <td class="paramtype">const MATRIXTYPE & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int & </td>
- <td class="paramname"> <em>row</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int & </td>
- <td class="paramname"> <em>col</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/<a class="el" href="forwards_8h_source.html">forwards.h</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html
deleted file mode 100644
index fead851..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >" -->
-<p>Supply suitable increment functions for the iterators:
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<class SCALARTYPE, typename F, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></h3>
-
-<p>Supply suitable increment functions for the iterators: </p>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae352c09bbded2dde5b8e14b174a52d9f"></a><!-- doxytag: member="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >::apply" ref="ae352c09bbded2dde5b8e14b174a52d9f" args="(const viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void apply </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int & </td>
- <td class="paramname"> <em>row</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int & </td>
- <td class="paramname"> <em>col</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html
deleted file mode 100644
index 90062ca..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)</td></tr>
-</table>
-<h3>template<class SCALARTYPE, typename F, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ae352c09bbded2dde5b8e14b174a52d9f"></a><!-- doxytag: member="viennacl::tools::MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > >::apply" ref="ae352c09bbded2dde5b8e14b174a52d9f" args="(const viennacl::matrix< SCALARTYPE, F, ALIGNMENT > &mat, unsigned int &row, unsigned int &col)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static void apply </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< SCALARTYPE, F, ALIGNMENT > & </td>
- <td class="paramname"> <em>mat</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int & </td>
- <td class="paramname"> <em>row</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">unsigned int & </td>
- <td class="paramname"> <em>col</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
deleted file mode 100644
index 0a56e36..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER" -->
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType1><br/>
- struct viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< MatrixType1 ></h3>
-
-<p>Implementation of a helper meta class for deducing the correct kernels for the supplied matrix. </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html
deleted file mode 100644
index cd6d7b0..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9d7293574efd24702391c77e7e3971d0"></a><!-- doxytag: member="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a9d7293574efd24702391c77e7e3971d0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_17d4b632de2d9fabb7bd70d8a521555f5.html#a9d7293574efd24702391c77e7e3971d0">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html
deleted file mode 100644
index 3f30ab9..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html">MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a6b4b25d7fd5078c59d141209050779f3"></a><!-- doxytag: member="viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a6b4b25d7fd5078c59d141209050779f3" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01viennacl_1853c3880f033bf9b0ac8b6a5126328a8.html#a6b4b25d7fd5078c59d141209050779f3">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__kernel__class__deducer_8hpp_source.html">matrix_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
deleted file mode 100644
index 4f0cc3f..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER" -->
-<p>deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType1, typename MatrixType2, typename MatrixType3><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2, MatrixType3 ></h3>
-
-<p>deduces kernel type for C=A*B, where A, B, C are MatrixType1, MatrixType2 and MatrixType3 respectively </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html
deleted file mode 100644
index f6df8b6..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_row_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a12f59df85ae233bdb473e7826811972c"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a12f59df85ae233bdb473e7826811972c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_row_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01394611b0ceee5956ad09b415daede0e8.html#a12f59df85ae233bdb473e7826811972c">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html
deleted file mode 100644
index b7e962a..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_row_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a4a11371fee17337eb321c3ff824787c8"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a4a11371fee17337eb321c3ff824787c8" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_row_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_013ebb272e2eaf8975aaf4fcb7a61e39fb.html#a4a11371fee17337eb321c3ff824787c8">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html
deleted file mode 100644
index 4fb0db1..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_col_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a318762097ca7212b82ae6ab04cbfa2d7"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a318762097ca7212b82ae6ab04cbfa2d7" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_col_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01451ca219b80994bea06421eb43cc614b.html#a318762097ca7212b82ae6ab04cbfa2d7">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html
deleted file mode 100644
index 534e568..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_row_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a041d7c18583a2b96a0b43bb0c0c185fe"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a041d7c18583a2b96a0b43bb0c0c185fe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_row_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_017a67fe9bd464ca62264b5ef05a8d1637.html#a041d7c18583a2b96a0b43bb0c0c185fe">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html
deleted file mode 100644
index b495172..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_col_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a4a44006b05b679a3af93ea6fa03560b5"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a4a44006b05b679a3af93ea6fa03560b5" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_col_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01a5d40755947c3577a8205a2fc8bb4e5d.html#a4a44006b05b679a3af93ea6fa03560b5">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html
deleted file mode 100644
index 6f40d2c..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_col_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a3fe128220ee8ae489e1fdc1ec248c74a"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a3fe128220ee8ae489e1fdc1ec248c74a" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_col_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01bc0de7a68659abfb05431148f2aabd11.html#a3fe128220ee8ae489e1fdc1ec248c74a">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html
deleted file mode 100644
index 81be238..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_row_row_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a3eb764b159bfae3b099eabbb99c418fe"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a3eb764b159bfae3b099eabbb99c418fe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_row_row_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01da9d08b87876b0b50e1ae8c2c9a0cc56.html#a3eb764b159bfae3b099eabbb99c418fe">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html
deleted file mode 100644
index 7be60ff..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html">MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_prod_col_col_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a98c8263eaa3a4bc70fd346d1737f0f71"></a><!-- doxytag: member="viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a98c8263eaa3a4bc70fd346d1737f0f71" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_prod_col_col_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___p_r_o_d___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_01f74d435a96dfc8fcf1b93cc6aa8489a8.html#a98c8263eaa3a4bc70fd346d1737f0f71">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__prod__kernel__class__deducer_8hpp_source.html">matrix_prod_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html
deleted file mode 100644
index d4b41c7..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html">MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER" -->
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#aa127bcf01d93e1e00b789461247547eb">size1</a> (LHS &lhs, RHS &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r.html#ae6d3dd1aae7bbcb593894a187ebdb2af">size2</a> (LHS &lhs, RHS &rhs)</td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< LHS, RHS, OP ></h3>
-
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>The operation tag </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa127bcf01d93e1e00b789461247547eb"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER::size1" ref="aa127bcf01d93e1e00b789461247547eb" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size1 </td>
- <td>(</td>
- <td class="paramtype">LHS & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">RHS & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="ae6d3dd1aae7bbcb593894a187ebdb2af"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER::size2" ref="ae6d3dd1aae7bbcb593894a187ebdb2af" args="(LHS &lhs, RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size2 </td>
- <td>(</td>
- <td class="paramtype">LHS & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">RHS & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html
deleted file mode 100644
index 6299aaf..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a618c0d75593fe1fe328adc6eb422bc93">size1</a> (<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const &lhs, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix033c7ed172fad3bb1b150c2d37650f77.html#a8c9fa937480c316bd57a1c3254d00292">size2</a> (<a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const &lhs, <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F1, unsigned int A1, typename F2, unsigned int A2><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a618c0d75593fe1fe328adc6eb422bc93"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod >::size1" ref="a618c0d75593fe1fe328adc6eb422bc93" args="(viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans > const &lhs, viennacl::matrix< ScalarType, F2, A2 > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size1 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a8c9fa937480c316bd57a1c3254d00292"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans >, const viennacl::matrix< ScalarType, F2, A2 >, viennacl::op_prod >::size2" ref="a8c9fa937480c316bd57a1c3254d00292" args="(viennacl::matrix_expression< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix< ScalarType, F1, A1 >, op_trans > const &lhs, viennacl::matrix< ScalarType, F2, A2 > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size2 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 >, op_trans > const & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 > const & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html
deleted file mode 100644
index 4daef6a..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html">MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#a1cdacb8e14a2f56cbc0abf2927b27a2b">size1</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const &lhs, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrixb4f2217e699a575de3c0010d34afa27f.html#adc37fe885156acbab596641f515a0f82">size2</a> (<a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const &lhs, <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F1, unsigned int A1, typename F2, unsigned int A2><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a1cdacb8e14a2f56cbc0abf2927b27a2b"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod >::size1" ref="a1cdacb8e14a2f56cbc0abf2927b27a2b" args="(viennacl::matrix< ScalarType, F1, A1 > const &lhs, viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size1 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="adc37fe885156acbab596641f515a0f82"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F1, A1 >, const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans >, viennacl::op_prod >::size2" ref="adc37fe885156acbab596641f515a0f82" args="(viennacl::matrix< ScalarType, F1, A1 > const &lhs, viennacl::matrix_expression< const viennacl::matrix< ScalarType, F2, A2 >, const viennacl::matrix< ScalarType, F2, A2 >, op_trans > const &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size2 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F1, A1 > const & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F2, A2 >, op_trans > const & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html
deleted file mode 100644
index 44fa466..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html">MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a09398ed02392ac3d11157533353a8f31">size1</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > &lhs, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > &rhs)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_i_z_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_sc57db5c08355f65dac8d1699d06ec5018.html#a65cfc5b2cfed688bed410fe6f983586d">size2</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > &lhs, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A1, unsigned int A2><br/>
- struct viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a09398ed02392ac3d11157533353a8f31"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod >::size1" ref="a09398ed02392ac3d11157533353a8f31" args="(viennacl::vector< ScalarType, A1 > &lhs, viennacl::vector< ScalarType, A2 > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size1 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<a class="anchor" id="a65cfc5b2cfed688bed410fe6f983586d"></a><!-- doxytag: member="viennacl::tools::MATRIX_SIZE_DEDUCER< viennacl::vector< ScalarType, A1 >, viennacl::vector< ScalarType, A2 >, viennacl::op_prod >::size2" ref="a65cfc5b2cfed688bed410fe6f983586d" args="(viennacl::vector< ScalarType, A1 > &lhs, viennacl::vector< ScalarType, A2 > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size2 </td>
- <td>(</td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A1 > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A2 > & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__size__deducer_8hpp_source.html">matrix_size_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
deleted file mode 100644
index 6424277..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER" -->
-<p>deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename MatrixType1, typename MatrixType2><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< MatrixType1, MatrixType2 ></h3>
-
-<p>deduces kernel type for A \ B, where A, B, C are MatrixType1 and MatrixType2 </p>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html
deleted file mode 100644
index 4e63fc2..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_row_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a6a870d032c93af230efb9a2585d0d8fe"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a6a870d032c93af230efb9a2585d0d8fe" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_row_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_2212ef73841e0f9d91397482e1421230.html#a6a870d032c93af230efb9a2585d0d8fe">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html
deleted file mode 100644
index 64e9e99..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_col_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a7dbff6faccea0ad583517deda3c2b7de"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a7dbff6faccea0ad583517deda3c2b7de" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_col_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_32b966fa9cb5cd0f0b15d077762b89fa.html#a7dbff6faccea0ad583517deda3c2b7de">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html
deleted file mode 100644
index 79ecdd8..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_row_col<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0a0f393da391149f6db6d56f5f763838"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT > >::ResultType" ref="a0a0f393da391149f6db6d56f5f763838" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_row_col<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_3cc9b72c3780ef21407075146b63e1fb.html#a0a0f393da391149f6db6d56f5f763838">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html
deleted file mode 100644
index bd9b66d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html">MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >" -->
-<p><code>#include <<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-viennacl::linalg::kernels::matrix_solve_col_row<br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">ResultType</a></td></tr>
-</table>
-<h3>template<typename SCALARTYPE, unsigned int ALIGNMENT><br/>
- struct viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a565860d7eec92d6d3bf47c191f2b9935"></a><!-- doxytag: member="viennacl::tools::MATRIX_SOLVE_KERNEL_CLASS_DEDUCER< viennacl::matrix< SCALARTYPE, viennacl::column_major, ALIGNMENT >, viennacl::matrix< SCALARTYPE, viennacl::row_major, ALIGNMENT > >::ResultType" ref="a565860d7eec92d6d3bf47c191f2b9935" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef viennacl::linalg::kernels::matrix_solve_col_row<SCALARTYPE, ALIGNMENT> <a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___s_o_l_v_e___k_e_r_n_e_l___c_l_a_s_s___d_e_d_u_c_e_r_3_e85a7e25cbf590905dc84d966f5e26e9.html#a565860d7eec92d6d3bf47c191f2b9935">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="matrix__solve__kernel__class__deducer_8hpp_source.html">matrix_solve_kernel_class_deducer.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html
deleted file mode 100644
index b26ebf5..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR< LHS, RHS > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>VECTOR_EXTRACTOR< LHS, RHS > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a><br class="typebreak"/>
-< typename <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a>< LHS ><br class="typebreak"/>
-::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a>, typename <br class="typebreak"/>
-<a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a>< RHS ><br class="typebreak"/>
-::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a> >::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a></td></tr>
-</table>
-<h3>template<typename LHS, typename RHS><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR< LHS, RHS ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9e7f3539ef2e71a6b4d199d882a40da0"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR::ResultType" ref="a9e7f3539ef2e71a6b4d199d882a40da0" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL</a><typename <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a><LHS>::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a>, typename <a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER</a><RHS>::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a>>::<a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a> <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html
deleted file mode 100644
index ee03761..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< LHS, RHS > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< LHS, RHS > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL" -->
-<p>Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <br class="typebreak"/>
-LHS::ERROR_COULD_NOT_EXTRACT_VECTOR_INFORMATION_FROM_VECTOR_EXPRESSION </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">ResultType</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, RHS ></h3>
-
-<p>Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand of the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand of the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> </td></tr>
- </table>
- </dd>
-</dl>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a9939181a319c04ab48a0d60cbe6e7dd9"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL::ResultType" ref="a9939181a319c04ab48a0d60cbe6e7dd9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef LHS::ERROR_COULD_NOT_EXTRACT_VECTOR_INFORMATION_FROM_VECTOR_EXPRESSION <a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html
deleted file mode 100644
index d2ab062..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, A > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">ResultType</a></td></tr>
-</table>
-<h3>template<typename LHS, typename ScalarType, unsigned int A><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae695f3958fa24d64fdbaf3e978e0ea1c"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > >::ResultType" ref="ae695f3958fa24d64fdbaf3e978e0ea1c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, A> <a class="el" href="classviennacl_1_1vector.html">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html
deleted file mode 100644
index b7976a4..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, A > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">ResultType</a></td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae695f3958fa24d64fdbaf3e978e0ea1c"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > >::ResultType" ref="ae695f3958fa24d64fdbaf3e978e0ea1c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, A> <a class="el" href="classviennacl_1_1vector.html">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html
deleted file mode 100644
index 7b21c4d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< ScalarType, A > </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">ResultType</a></td></tr>
-</table>
-<h3>template<typename RHS, typename ScalarType, unsigned int A><br/>
- struct viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="ae695f3958fa24d64fdbaf3e978e0ea1c"></a><!-- doxytag: member="viennacl::tools::VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS >::ResultType" ref="ae695f3958fa24d64fdbaf3e978e0ea1c" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><ScalarType, A> <a class="el" href="classviennacl_1_1vector.html">ResultType</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html
deleted file mode 100644
index 049487a..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< LHS, RHS, OP > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER" -->
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<typename LHS, typename RHS, typename OP><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></h3>
-
-<p>Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. </p>
-<dl><dt><b>Template Parameters:</b></dt><dd>
- <table border="0" cellspacing="2" cellpadding="0">
- <tr><td valign="top"></td><td valign="top"><em>LHS</em> </td><td>The left hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>RHS</em> </td><td>The right hand side operand </td></tr>
- <tr><td valign="top"></td><td valign="top"><em>OP</em> </td><td>The operation tag </td></tr>
- </table>
- </dd>
-</dl>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html
deleted file mode 100644
index 7cf37d1..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">size</a> (const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< ScalarType, Amat > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aba827ef7d82c4a95c0293eac77a9a495"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="aba827ef7d82c4a95c0293eac77a9a495" args="(const viennacl::compressed_matrix< ScalarType, Amat > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1compressed__matrix.html">viennacl::compressed_matrix</a>< ScalarType, Amat > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html
deleted file mode 100644
index ca0e66d..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">size</a> (const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< ScalarType, Amat > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="aa843af9061cf09ded02f2c5c5edb93e0"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="aa843af9061cf09ded02f2c5c5edb93e0" args="(const viennacl::coordinate_matrix< ScalarType, Amat > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1coordinate__matrix.html">viennacl::coordinate_matrix</a>< ScalarType, Amat > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html
deleted file mode 100644
index 21e0d3f..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">size</a> (const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ad135912731852cebdfa2c996d57dd4a5"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="ad135912731852cebdfa2c996d57dd4a5" args="(const viennacl::matrix< ScalarType, F, Amat > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html
deleted file mode 100644
index 1f5e4b4..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">size</a> (const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, op_trans > &lhs, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, typename F, unsigned int Amat, unsigned int A><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="afafa70095b248b947c523711ff4cd357"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod >::size" ref="afafa70095b248b947c523711ff4cd357" args="(const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans > &lhs, const viennacl::vector< ScalarType, A > &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, const <a class="el" href="classviennacl_1_1matrix.html">viennacl::matrix</a>< ScalarType, F, Amat >, op_trans > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html
deleted file mode 100644
index 30c9097..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">size</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &lhs, const RHS &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A, typename RHS><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ada291f3a68989aac52d341b8d8e396b3"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div >::size" ref="ada291f3a68989aac52d341b8d8e396b3" args="(const viennacl::vector< ScalarType, A > &lhs, const RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const RHS & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html b/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html
deleted file mode 100644
index 0370b2b..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-static-methods">Static Public Member Functions</a> </div>
- <div class="headertitle">
-<h1>VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
-Static Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">size</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > &lhs, const RHS &rhs)</td></tr>
-</table>
-<h3>template<typename ScalarType, unsigned int A, typename RHS><br/>
- struct viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></h3>
-
-<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="ada291f3a68989aac52d341b8d8e396b3"></a><!-- doxytag: member="viennacl::tools::VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod >::size" ref="ada291f3a68989aac52d341b8d8e396b3" args="(const viennacl::vector< ScalarType, A > &lhs, const RHS &rhs)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static size_t size </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< ScalarType, A > & </td>
- <td class="paramname"> <em>lhs</em>, </td>
- </tr>
- <tr>
- <td class="paramkey"></td>
- <td></td>
- <td class="paramtype">const RHS & </td>
- <td class="paramname"> <em>rhs</em></td><td> </td>
- </tr>
- <tr>
- <td></td>
- <td>)</td>
- <td></td><td></td><td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if.html b/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if.html
deleted file mode 100644
index 4993317..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: enable_if< b, T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>enable_if< b, T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::enable_if" -->
-<p>Simple enable-if variant that uses the SFINAE pattern.
-<a href="#_details">More...</a></p>
-
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">type</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<h3>template<bool b, class T = void><br/>
- struct viennacl::tools::enable_if< b, T ></h3>
-
-<p>Simple enable-if variant that uses the SFINAE pattern. </p>
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a565429e62c1d4fd084335146ba778e17"></a><!-- doxytag: member="viennacl::tools::enable_if::type" ref="a565429e62c1d4fd084335146ba778e17" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T <a class="el" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html b/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html
deleted file mode 100644
index 6efe2d3..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: enable_if< false, T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="headertitle">
-<h1>enable_if< false, T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::enable_if< false, T >" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-</table>
-<h3>template<class T><br/>
- struct viennacl::tools::enable_if< false, T ></h3>
-
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1tools_1_1result__of_1_1value__type.html b/doc/doxygen/html/structviennacl_1_1tools_1_1result__of_1_1value__type.html
deleted file mode 100644
index 11ccc87..0000000
--- a/doc/doxygen/html/structviennacl_1_1tools_1_1result__of_1_1value__type.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: value_type< T > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools.html">tools</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">result_of</a> </li>
- <li><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>value_type< T > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::tools::result_of::value_type" -->
-<p><code>#include <<a class="el" href="tools_8hpp_source.html">tools.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef T::value_type </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">type</a></td></tr>
-</table>
-<h3>template<typename T><br/>
- struct viennacl::tools::result_of::value_type< T ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aa325c13a882156e0897098ca1ccaf7fc"></a><!-- doxytag: member="viennacl::tools::result_of::value_type::type" ref="aa325c13a882156e0897098ca1ccaf7fc" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef T::value_type <a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/<a class="el" href="tools_8hpp_source.html">tools.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of.html
deleted file mode 100644
index af18078..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< Sequence, Active > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< Sequence, Active > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__none.html">viennacl::tag_none</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">type</a></td></tr>
-</table>
-<h3>template<typename Sequence, typename Active><br/>
- struct viennacl::traits::tag_of< Sequence, Active ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="aa4b62e36b82735fe7680dffa115650a9"></a><!-- doxytag: member="viennacl::traits::tag_of::type" ref="aa4b62e36b82735fe7680dffa115650a9" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__none.html">viennacl::tag_none</a> <a class="el" href="structviennacl_1_1tag__none.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html
deleted file mode 100644
index aa7d3a2..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< std::vector< T, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< std::vector< T, A > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< std::vector< T, A > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">type</a></td></tr>
-</table>
-<h3>template<typename T, typename A><br/>
- struct viennacl::traits::tag_of< std::vector< T, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0ecdaf62bedc425d949e0fc84941ea59"></a><!-- doxytag: member="viennacl::traits::tag_of< std::vector< T, A > >::type" ref="a0ecdaf62bedc425d949e0fc84941ea59" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="el" href="structviennacl_1_1tag__stl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html
deleted file mode 100644
index a1208f8..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">type</a></td></tr>
-</table>
-<h3>template<typename KEY, typename DATA, typename COMPARE, typename AMAP, typename AVEC><br/>
- struct viennacl::traits::tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0ecdaf62bedc425d949e0fc84941ea59"></a><!-- doxytag: member="viennacl::traits::tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > >::type" ref="a0ecdaf62bedc425d949e0fc84941ea59" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="el" href="structviennacl_1_1tag__stl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html
deleted file mode 100644
index b78426c..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< std::vector< std::vector< T, A >, A > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< std::vector< std::vector< T, A >, A > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< std::vector< std::vector< T, A >, A > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">type</a></td></tr>
-</table>
-<h3>template<typename T, typename A><br/>
- struct viennacl::traits::tag_of< std::vector< std::vector< T, A >, A > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a0ecdaf62bedc425d949e0fc84941ea59"></a><!-- doxytag: member="viennacl::traits::tag_of< std::vector< std::vector< T, A >, A > >::type" ref="a0ecdaf62bedc425d949e0fc84941ea59" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="el" href="structviennacl_1_1tag__stl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html
deleted file mode 100644
index 496bb65..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::compressed_matrix< T, I > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< viennacl::compressed_matrix< T, I > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::compressed_matrix< T, I > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int I><br/>
- struct viennacl::traits::tag_of< viennacl::compressed_matrix< T, I > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::compressed_matrix< T, I > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html
deleted file mode 100644
index 83fa133..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::coordinate_matrix< T, I > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< viennacl::coordinate_matrix< T, I > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::coordinate_matrix< T, I > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int I><br/>
- struct viennacl::traits::tag_of< viennacl::coordinate_matrix< T, I > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::coordinate_matrix< T, I > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html
deleted file mode 100644
index 182a967..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::matrix< T, F, alignment > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< viennacl::matrix< T, F, alignment > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::matrix< T, F, alignment > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, typename F, unsigned int alignment><br/>
- struct viennacl::traits::tag_of< viennacl::matrix< T, F, alignment > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::matrix< T, F, alignment > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html
deleted file mode 100644
index 33388bb..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::matrix_expression< T1, T2, OP > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< viennacl::matrix_expression< T1, T2, OP > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::matrix_expression< T1, T2, OP > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T1, typename T2, typename OP><br/>
- struct viennacl::traits::tag_of< viennacl::matrix_expression< T1, T2, OP > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::matrix_expression< T1, T2, OP > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html b/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html
deleted file mode 100644
index 4170dd6..0000000
--- a/doc/doxygen/html/structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: tag_of< viennacl::vector< T, alignment > > Struct Template Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
- <li><a href="functions.html"><span>Data Fields</span></a></li>
- </ul>
- </div>
- <div class="navpath">
- <ul>
- <li><a class="el" href="namespaceviennacl.html">viennacl</a> </li>
- <li><a class="el" href="namespaceviennacl_1_1traits.html">traits</a> </li>
- <li><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a> </li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#pub-types">Public Types</a> </div>
- <div class="headertitle">
-<h1>tag_of< viennacl::vector< T, alignment > > Struct Template Reference</h1> </div>
-</div>
-<div class="contents">
-<!-- doxytag: class="viennacl::traits::tag_of< viennacl::vector< T, alignment > >" -->
-<p><code>#include <<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a>></code></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="pub-types"></a>
-Public Types</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">type</a></td></tr>
-</table>
-<h3>template<typename T, unsigned int alignment><br/>
- struct viennacl::traits::tag_of< viennacl::vector< T, alignment > ></h3>
-
-<hr/><h2>Member Typedef Documentation</h2>
-<a class="anchor" id="a60d0519769154ef68fd91ce836be8743"></a><!-- doxytag: member="viennacl::traits::tag_of< viennacl::vector< T, alignment > >::type" ref="a60d0519769154ef68fd91ce836be8743" args="" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">typedef <a class="el" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="el" href="structviennacl_1_1tag__viennacl.html">type</a></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-
-</div>
-</div>
-<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/<a class="el" href="tag__of_8hpp_source.html">tag_of.hpp</a></li>
-</ul>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tab_a.png b/doc/doxygen/html/tab_a.png
deleted file mode 100644
index 2d99ef2..0000000
Binary files a/doc/doxygen/html/tab_a.png and /dev/null differ
diff --git a/doc/doxygen/html/tab_b.png b/doc/doxygen/html/tab_b.png
deleted file mode 100644
index b2c3d2b..0000000
Binary files a/doc/doxygen/html/tab_b.png and /dev/null differ
diff --git a/doc/doxygen/html/tab_h.png b/doc/doxygen/html/tab_h.png
deleted file mode 100644
index c11f48f..0000000
Binary files a/doc/doxygen/html/tab_h.png and /dev/null differ
diff --git a/doc/doxygen/html/tab_s.png b/doc/doxygen/html/tab_s.png
deleted file mode 100644
index 978943a..0000000
Binary files a/doc/doxygen/html/tab_s.png and /dev/null differ
diff --git a/doc/doxygen/html/tabs.css b/doc/doxygen/html/tabs.css
deleted file mode 100644
index 2192056..0000000
--- a/doc/doxygen/html/tabs.css
+++ /dev/null
@@ -1,59 +0,0 @@
-.tabs, .tabs2, .tabs3 {
- background-image: url('tab_b.png');
- width: 100%;
- z-index: 101;
- font-size: 13px;
-}
-
-.tabs2 {
- font-size: 10px;
-}
-.tabs3 {
- font-size: 9px;
-}
-
-.tablist {
- margin: 0;
- padding: 0;
- display: table;
-}
-
-.tablist li {
- float: left;
- display: table-cell;
- background-image: url('tab_b.png');
- line-height: 36px;
- list-style: none;
-}
-
-.tablist a {
- display: block;
- padding: 0 20px;
- font-weight: bold;
- background-image:url('tab_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color: #283A5D;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- text-decoration: none;
- outline: none;
-}
-
-.tabs3 .tablist a {
- padding: 0 10px;
-}
-
-.tablist a:hover {
- background-image: url('tab_h.png');
- background-repeat:repeat-x;
- color: #fff;
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
- text-decoration: none;
-}
-
-.tablist li.current a {
- background-image: url('tab_a.png');
- background-repeat:repeat-x;
- color: #fff;
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
diff --git a/doc/doxygen/html/tag__of_8hpp.html b/doc/doxygen/html/tag__of_8hpp.html
deleted file mode 100644
index 552b12a..0000000
--- a/doc/doxygen/html/tag__of_8hpp.html
+++ /dev/null
@@ -1,85 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Dispatch facility for distinguishing between ublas, STL and ViennaCL types.
-<a href="#_details">More...</a></p>
-
-<p><a href="tag__of_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__none.html">tag_none</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__stl.html">tag_stl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of.html">tag_of< Sequence, Active ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">tag_of< std::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">tag_of< std::vector< std::vector< T, A >, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">tag_of< std::vector< std::map< KEY, DATA, COMPARE, AMAP >, AVEC > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">tag_of< viennacl::vector< T, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">tag_of< viennacl::matrix< T, F, alignment > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">tag_of< viennacl::matrix_expression< T1, T2, OP > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::compressed_matrix< T, I > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">tag_of< viennacl::coordinate_matrix< T, I > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4.html">is_mtl4< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a>. <a href="structviennacl_1_1is__mtl4.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">is_mtl4< viennacl::tag_mtl4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen.html">is_eigen< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__eigen.html">tag_eigen</a>. <a href="structviennacl_1_1is__eigen.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">is_eigen< viennacl::tag_eigen ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas.html">is_ublas< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. <a href="structviennacl_1_1is__ublas.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">is_ublas< viennacl::tag_ublas ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl.html">is_stl< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__ublas.html">tag_ublas</a>. <a href="structviennacl_1_1is__stl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">is_stl< viennacl::tag_stl ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl.html">is_viennacl< Tag ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Meta function which checks whether a tag is <a class="el" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a>. <a href="structviennacl_1_1is__viennacl.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">is_viennacl< viennacl::tag_viennacl ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1traits.html">viennacl::traits</a></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Dispatch facility for distinguishing between ublas, STL and ViennaCL types. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tag__of_8hpp_source.html b/doc/doxygen/html/tag__of_8hpp_source.html
deleted file mode 100644
index 1d2c695..0000000
--- a/doc/doxygen/html/tag__of_8hpp_source.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/tag_of.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="tag__of_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015
-<a name="l00016"></a>00016 <span class="preprocessor">#ifndef _VIENNACL_TAGOF_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TAGOF_HPP_</span>
-<a name="l00018"></a>00018 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#ifdef VIENNACL_HAVE_UBLAS </span>
-<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/ublas/matrix_sparse.hpp></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include <boost/numeric/ublas/matrix.hpp></span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include <boost/numeric/ublas/vector.hpp></span>
-<a name="l00027"></a>00027 <span class="preprocessor">#endif</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span>
-<a name="l00029"></a>00029 <span class="preprocessor">#ifdef VIENNACL_HAVE_EIGEN </span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <Eigen/Core></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <Eigen/Sparse></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/mtl/mtl.hpp></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#endif</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span>
-<a name="l00038"></a>00038 <span class="keyword">namespace </span>viennacl
-<a name="l00039"></a>00039 {
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00042"></a>00042 <span class="comment">// TAGS</span>
-<a name="l00043"></a>00043 <span class="comment">//</span>
-<a name="l00044"></a><a class="code" href="structviennacl_1_1tag__none.html">00044</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__none.html">tag_none</a> {};
-<a name="l00045"></a><a class="code" href="structviennacl_1_1tag__mtl4.html">00045</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> {};
-<a name="l00046"></a><a class="code" href="structviennacl_1_1tag__eigen.html">00046</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> {};
-<a name="l00047"></a><a class="code" href="structviennacl_1_1tag__ublas.html">00047</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> {};
-<a name="l00048"></a><a class="code" href="structviennacl_1_1tag__stl.html">00048</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__stl.html">tag_stl</a> {};
-<a name="l00049"></a><a class="code" href="structviennacl_1_1tag__viennacl.html">00049</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> {};
-<a name="l00050"></a>00050
-<a name="l00051"></a><a class="code" href="namespaceviennacl_1_1traits.html">00051</a> <span class="keyword">namespace </span>traits
-<a name="l00052"></a>00052 {
-<a name="l00053"></a>00053 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00054"></a>00054 <span class="comment">// GENERIC BASE</span>
-<a name="l00055"></a>00055 <span class="comment">//</span>
-<a name="l00065"></a>00065 <span class="comment"></span> <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> Active = <span class="keywordtype">void</span> >
-<a name="l00066"></a>00066 <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>;
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">template</span> < <span class="keyword">typename</span> Sequence, <span class="keyword">typename</span> Active >
-<a name="l00069"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">00069</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>
-<a name="l00070"></a>00070 {
-<a name="l00071"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of.html#aa4b62e36b82735fe7680dffa115650a9">00071</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__none.html">viennacl::tag_none</a> <a class="code" href="structviennacl_1_1tag__none.html">type</a>;
-<a name="l00072"></a>00072 };
-<a name="l00073"></a>00073
-<a name="l00074"></a>00074 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00075"></a>00075 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00076"></a>00076 <span class="comment">// MTL4</span>
-<a name="l00077"></a>00077 <span class="comment">//</span>
-<a name="l00078"></a>00078 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00079"></a>00079 <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< mtl::dense_vector<ScalarType> >
-<a name="l00080"></a>00080 {
-<a name="l00081"></a>00081 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__mtl4.html">viennacl::tag_mtl4</a> type;
-<a name="l00082"></a>00082 };
-<a name="l00083"></a>00083
-<a name="l00084"></a>00084 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00085"></a>00085 <span class="keyword">struct </span>tag_of< mtl::compressed2D<ScalarType> >
-<a name="l00086"></a>00086 {
-<a name="l00087"></a>00087 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__mtl4.html">viennacl::tag_mtl4</a> type;
-<a name="l00088"></a>00088 };
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> T>
-<a name="l00091"></a>00091 <span class="keyword">struct </span>tag_of< mtl::dense2D<ScalarType, T> >
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__mtl4.html">viennacl::tag_mtl4</a> type;
-<a name="l00094"></a>00094 };
-<a name="l00095"></a>00095 <span class="preprocessor"> #endif</span>
-<a name="l00096"></a>00096 <span class="preprocessor"></span>
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00099"></a>00099 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00100"></a>00100 <span class="comment">// Eigen</span>
-<a name="l00101"></a>00101 <span class="comment">//</span>
-<a name="l00102"></a>00102 <span class="keyword">template</span> <>
-<a name="l00103"></a>00103 <span class="keyword">struct </span>tag_of< Eigen::VectorXf >
-<a name="l00104"></a>00104 {
-<a name="l00105"></a>00105 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a> type;
-<a name="l00106"></a>00106 };
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="keyword">template</span> <>
-<a name="l00109"></a>00109 <span class="keyword">struct </span>tag_of< Eigen::VectorXd >
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a> type;
-<a name="l00112"></a>00112 };
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <span class="keyword">template</span> <>
-<a name="l00115"></a>00115 <span class="keyword">struct </span>tag_of< Eigen::MatrixXf >
-<a name="l00116"></a>00116 {
-<a name="l00117"></a>00117 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a> type;
-<a name="l00118"></a>00118 };
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keyword">template</span> <>
-<a name="l00121"></a>00121 <span class="keyword">struct </span>tag_of< Eigen::MatrixXd >
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a> type;
-<a name="l00124"></a>00124 };
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">int</span> option>
-<a name="l00127"></a>00127 <span class="keyword">struct </span>tag_of< Eigen::SparseMatrix<ScalarType, option> >
-<a name="l00128"></a>00128 {
-<a name="l00129"></a>00129 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__eigen.html">viennacl::tag_eigen</a> type;
-<a name="l00130"></a>00130 };
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="preprocessor"> #endif</span>
-<a name="l00133"></a>00133 <span class="preprocessor"></span>
-<a name="l00134"></a>00134 <span class="preprocessor"> #ifdef VIENNACL_HAVE_UBLAS</span>
-<a name="l00135"></a>00135 <span class="preprocessor"></span> <span class="comment">// ----------------------------------------------------</span>
-<a name="l00136"></a>00136 <span class="comment">// UBLAS</span>
-<a name="l00137"></a>00137 <span class="comment">//</span>
-<a name="l00138"></a>00138 <span class="keyword">template</span>< <span class="keyword">typename</span> T >
-<a name="l00139"></a>00139 <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::vector<T> >
-<a name="l00140"></a>00140 {
-<a name="l00141"></a>00141 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a> type;
-<a name="l00142"></a>00142 };
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="keyword">template</span>< <span class="keyword">typename</span> T >
-<a name="l00145"></a>00145 <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::<a class="code" href="namespaceviennacl_1_1io_1_1val.html#ae3cf8320d226801ab9fc7b23bbb97075">matrix</a><T> >
-<a name="l00146"></a>00146 {
-<a name="l00147"></a>00147 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a> type;
-<a name="l00148"></a>00148 };
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <span class="keyword">template</span>< <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2 >
-<a name="l00151"></a>00151 <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::matrix_unary2<T1,T2> >
-<a name="l00152"></a>00152 {
-<a name="l00153"></a>00153 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a> type;
-<a name="l00154"></a>00154 };
-<a name="l00155"></a>00155
-<a name="l00156"></a>00156 <span class="keyword">template</span>< <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2 >
-<a name="l00157"></a>00157 <span class="keyword">struct </span>tag_of< boost::<a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a2518a2ebdcfc0611e13ca2c3d30abf50">numeric</a>::ublas::compressed_matrix<T1,T2> >
-<a name="l00158"></a>00158 {
-<a name="l00159"></a>00159 <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__ublas.html">viennacl::tag_ublas</a> type;
-<a name="l00160"></a>00160 };
-<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="preprocessor"> #endif</span>
-<a name="l00163"></a>00163 <span class="preprocessor"></span>
-<a name="l00164"></a>00164 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00165"></a>00165 <span class="comment">// STL types</span>
-<a name="l00166"></a>00166 <span class="comment">//</span>
-<a name="l00167"></a>00167
-<a name="l00168"></a>00168 <span class="comment">//vector</span>
-<a name="l00169"></a>00169 <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> A >
-<a name="l00170"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html">00170</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< std::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, A> >
-<a name="l00171"></a>00171 {
-<a name="l00172"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">00172</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="code" href="structviennacl_1_1tag__stl.html">type</a>;
-<a name="l00173"></a>00173 };
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="comment">//dense matrix</span>
-<a name="l00176"></a>00176 <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> A >
-<a name="l00177"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html">00177</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< std::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><std::vector<T, A>, A> >
-<a name="l00178"></a>00178 {
-<a name="l00179"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1vector_3_01_t_00_01_a_01_4_00_01_a_01_4_01_4.html#a0ecdaf62bedc425d949e0fc84941ea59">00179</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="code" href="structviennacl_1_1tag__stl.html">type</a>;
-<a name="l00180"></a>00180 };
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <span class="comment">//sparse matrix (vector of maps)</span>
-<a name="l00183"></a>00183 <span class="keyword">template</span>< <span class="keyword">typename</span> KEY, <span class="keyword">typename</span> DATA, <span class="keyword">typename</span> COMPARE, <span class="keyword">typename</span> AMAP, <span class="keyword">typename</span> AVEC>
-<a name="l00184"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html">00184</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< std::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
-<a name="l00185"></a>00185 {
-<a name="l00186"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01std_1_1vector_3_01std_1_1map_3_01_k_e_y_00_01_d_a_t_a_0088c8f3ace452e521a28b3071c4caf916.html#a0ecdaf62bedc425d949e0fc84941ea59">00186</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__stl.html">viennacl::tag_stl</a> <a class="code" href="structviennacl_1_1tag__stl.html">type</a>;
-<a name="l00187"></a>00187 };
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00191"></a>00191 <span class="comment">// VIENNACL</span>
-<a name="l00192"></a>00192 <span class="comment">//</span>
-<a name="l00193"></a>00193 <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00194"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html">00194</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, alignment> >
-<a name="l00195"></a>00195 {
-<a name="l00196"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1vector_3_01_t_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00196</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00197"></a>00197 };
-<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment >
-<a name="l00200"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html">00200</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a><T, F, alignment> >
-<a name="l00201"></a>00201 {
-<a name="l00202"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix_3_01_t_00_01_f_00_01alignment_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00202</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00203"></a>00203 };
-<a name="l00204"></a>00204
-<a name="l00205"></a>00205 <span class="keyword">template</span>< <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2, <span class="keyword">typename</span> OP >
-<a name="l00206"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html">00206</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><T1,T2,OP> >
-<a name="l00207"></a>00207 {
-<a name="l00208"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1matrix__expression_3_01_t1_00_01_t2_00_01_o_p_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00208</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00209"></a>00209 };
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> I>
-<a name="l00212"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html">00212</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><T,I> >
-<a name="l00213"></a>00213 {
-<a name="l00214"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1compressed__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00214</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00215"></a>00215 };
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 <span class="keyword">template</span>< <span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> I>
-<a name="l00218"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html">00218</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1traits_1_1tag__of.html">tag_of</a>< viennacl::<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><T,I> >
-<a name="l00219"></a>00219 {
-<a name="l00220"></a><a class="code" href="structviennacl_1_1traits_1_1tag__of_3_01viennacl_1_1coordinate__matrix_3_01_t_00_01_i_01_4_01_4.html#a60d0519769154ef68fd91ce836be8743">00220</a> <span class="keyword">typedef</span> <a class="code" href="structviennacl_1_1tag__viennacl.html">viennacl::tag_viennacl</a> <a class="code" href="structviennacl_1_1tag__viennacl.html">type</a>;
-<a name="l00221"></a>00221 };
-<a name="l00222"></a>00222 <span class="comment">// ----------------------------------------------------</span>
-<a name="l00223"></a>00223 } <span class="comment">// end namespace traits</span>
-<a name="l00224"></a>00224
-<a name="l00225"></a>00225
-<a name="l00230"></a>00230 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00231"></a><a class="code" href="structviennacl_1_1is__mtl4.html">00231</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">is_mtl4</a>
-<a name="l00232"></a>00232 {
-<a name="l00233"></a><a class="code" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">00233</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };
-<a name="l00234"></a>00234 };
-<a name="l00235"></a>00235
-<a name="l00236"></a>00236 <span class="keyword">template</span> <>
-<a name="l00237"></a><a class="code" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html">00237</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__mtl4.html" title="Meta function which checks whether a tag is tag_mtl4.">is_mtl4</a>< viennacl::<a class="code" href="structviennacl_1_1tag__mtl4.html">tag_mtl4</a> >
-<a name="l00238"></a>00238 {
-<a name="l00239"></a><a class="code" href="structviennacl_1_1is__mtl4_3_01viennacl_1_1tag__mtl4_01_4.html#adf764cbdea00d65edcd07bb9953ad2b7a97de9ab6885342a574053b8f64a563a9">00239</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__mtl4.html#a06fc87d81c62e9abb8790b6e5713c55ba97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };
-<a name="l00240"></a>00240 };
-<a name="l00241"></a>00241
-<a name="l00246"></a>00246 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00247"></a><a class="code" href="structviennacl_1_1is__eigen.html">00247</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">is_eigen</a>
-<a name="l00248"></a>00248 {
-<a name="l00249"></a><a class="code" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">00249</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };
-<a name="l00250"></a>00250 };
-<a name="l00251"></a>00251
-<a name="l00252"></a>00252 <span class="keyword">template</span> <>
-<a name="l00253"></a><a class="code" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html">00253</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__eigen.html" title="Meta function which checks whether a tag is tag_eigen.">is_eigen</a>< viennacl::<a class="code" href="structviennacl_1_1tag__eigen.html">tag_eigen</a> >
-<a name="l00254"></a>00254 {
-<a name="l00255"></a><a class="code" href="structviennacl_1_1is__eigen_3_01viennacl_1_1tag__eigen_01_4.html#abc6126af1d45847bc59afa0aa3216b04a97de9ab6885342a574053b8f64a563a9">00255</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__eigen.html#a99fb83031ce9923c84392b4e92f956b5a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };
-<a name="l00256"></a>00256 };
-<a name="l00257"></a>00257
-<a name="l00258"></a>00258
-<a name="l00263"></a>00263 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00264"></a><a class="code" href="structviennacl_1_1is__ublas.html">00264</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">is_ublas</a>
-<a name="l00265"></a>00265 {
-<a name="l00266"></a><a class="code" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">00266</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };
-<a name="l00267"></a>00267 };
-<a name="l00268"></a>00268
-<a name="l00269"></a>00269 <span class="keyword">template</span> <>
-<a name="l00270"></a><a class="code" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html">00270</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__ublas.html" title="Meta function which checks whether a tag is tag_ublas.">is_ublas</a>< viennacl::<a class="code" href="structviennacl_1_1tag__ublas.html">tag_ublas</a> >
-<a name="l00271"></a>00271 {
-<a name="l00272"></a><a class="code" href="structviennacl_1_1is__ublas_3_01viennacl_1_1tag__ublas_01_4.html#a61dadd085c1777f559549e05962b2c9ea97de9ab6885342a574053b8f64a563a9">00272</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__ublas.html#adc29c2ff13d900c2f185ee95427fb06ca97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };
-<a name="l00273"></a>00273 };
-<a name="l00274"></a>00274
-<a name="l00279"></a>00279 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00280"></a><a class="code" href="structviennacl_1_1is__stl.html">00280</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">is_stl</a>
-<a name="l00281"></a>00281 {
-<a name="l00282"></a><a class="code" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">00282</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };
-<a name="l00283"></a>00283 };
-<a name="l00284"></a>00284
-<a name="l00285"></a>00285 <span class="keyword">template</span> <>
-<a name="l00286"></a><a class="code" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html">00286</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__stl.html" title="Meta function which checks whether a tag is tag_ublas.">is_stl</a>< viennacl::<a class="code" href="structviennacl_1_1tag__stl.html">tag_stl</a> >
-<a name="l00287"></a>00287 {
-<a name="l00288"></a><a class="code" href="structviennacl_1_1is__stl_3_01viennacl_1_1tag__stl_01_4.html#a0411cd49bb5b71852cecd93bcbf0ca2da97de9ab6885342a574053b8f64a563a9">00288</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__stl.html#a726ca809ffd3d67ab4b8476646f26635a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };
-<a name="l00289"></a>00289 };
-<a name="l00290"></a>00290
-<a name="l00291"></a>00291
-<a name="l00296"></a>00296 <span class="keyword">template</span> <<span class="keyword">typename</span> Tag>
-<a name="l00297"></a><a class="code" href="structviennacl_1_1is__viennacl.html">00297</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">is_viennacl</a>
-<a name="l00298"></a>00298 {
-<a name="l00299"></a><a class="code" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">00299</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">false</span> };
-<a name="l00300"></a>00300 };
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 <span class="keyword">template</span> <>
-<a name="l00303"></a><a class="code" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html">00303</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1is__viennacl.html" title="Meta function which checks whether a tag is tag_viennacl.">is_viennacl</a>< viennacl::<a class="code" href="structviennacl_1_1tag__viennacl.html">tag_viennacl</a> >
-<a name="l00304"></a>00304 {
-<a name="l00305"></a><a class="code" href="structviennacl_1_1is__viennacl_3_01viennacl_1_1tag__viennacl_01_4.html#ab04a0655cd1e3bcac5e8f48c18df1a57a97de9ab6885342a574053b8f64a563a9">00305</a> <span class="keyword">enum</span> { <a class="code" href="structviennacl_1_1is__viennacl.html#abed82baf7f470b522273a3e37c24c600a97de9ab6885342a574053b8f64a563a9">value</a> = <span class="keyword">true</span> };
-<a name="l00306"></a>00306 };
-<a name="l00307"></a>00307
-<a name="l00308"></a>00308 } <span class="comment">// end namespace viennacl</span>
-<a name="l00309"></a>00309
-<a name="l00310"></a>00310 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tools_8hpp.html b/doc/doxygen/html/tools_8hpp.html
deleted file mode 100644
index 988239e..0000000
--- a/doc/doxygen/html/tools_8hpp.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Various little tools used here and there in ViennaCL.
-<a href="#_details">More...</a></p>
-<code>#include <string></code><br/>
-<code>#include <fstream></code><br/>
-<code>#include <sstream></code><br/>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="adapter_8hpp_source.html">viennacl/tools/adapter.hpp</a>"</code><br/>
-<code>#include <vector></code><br/>
-<code>#include <map></code><br/>
-
-<p><a href="tools_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type< T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">MATRIX_ITERATOR_INCREMENTER< viennacl::row_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Supply suitable increment functions for the iterators: <a href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">MATRIX_ITERATOR_INCREMENTER< viennacl::col_iteration, viennacl::matrix< SCALARTYPE, F, ALIGNMENT > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if.html">enable_if< b, T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Simple enable-if variant that uses the SFINAE pattern. <a href="structviennacl_1_1tools_1_1enable__if.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">enable_if< false, T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A guard that checks whether the floating point type of GPU types is either float or double. <a href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">CHECK_SCALAR_TEMPLATE_ARGUMENT< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">CONST_REMOVER< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes the const qualifier from a type. <a href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">CONST_REMOVER< const T ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">VECTOR_EXTRACTOR_IMPL< LHS, RHS ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Extracts the vector type from one of the two arguments. Used for the <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> type. <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">VECTOR_EXTRACTOR_IMPL< LHS, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, RHS ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">VECTOR_EXTRACTOR_IMPL< viennacl::vector< ScalarType, A >, viennacl::vector< ScalarType, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR< LHS, RHS ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">VECTOR_SIZE_DEDUCER< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Deduces the size of the resulting vector represented by a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> from the operands. <a href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">VECTOR_SIZE_DEDUCER< const viennacl::vector< ScalarType, A >, RHS, viennacl::op_div ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">VECTOR_SIZE_DEDUCER< const viennacl::compressed_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">VECTOR_SIZE_DEDUCER< const viennacl::coordinate_matrix< ScalarType, Amat >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">VECTOR_SIZE_DEDUCER< const viennacl::matrix_expression< const viennacl::matrix< ScalarType, F, Amat >, const viennacl::matrix< ScalarType, F, Amat >, op_trans >, const viennacl::vector< ScalarType, A >, viennacl::op_prod ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">CPU_SCALAR_TYPE_DEDUCER< T ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T> <a href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">CPU_SCALAR_TYPE_DEDUCER< float ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">CPU_SCALAR_TYPE_DEDUCER< double ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::scalar< T > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::vector< T, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix< T, F, A > ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">CPU_SCALAR_TYPE_DEDUCER< viennacl::matrix_expression< const matrix< T, F, A >, const matrix< T, F, A >, op_trans > ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html">viennacl::tools</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html">viennacl::tools::traits</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1result__of.html">viennacl::tools::result_of</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename MatrixType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a> (MatrixType &matrix, size_t rows, size_t cols)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">resize</a> (VectorType &vec, size_t new_size)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a> (VectorType &vec)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename VectorType > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">unsigned int </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> (VectorType &vec)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">readTextFromFile</a> (const std::string &filename)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Reads a text from a file into a std::string. <a href="#ae0476afc58ea44d5d67ffe7384f59389"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">strReplace</a> (const std::string &text, std::string to_search, std::string to_replace)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Replaces all occurances of a substring by another stringstream. <a href="#aabca73e564ff14ed639cfe0a94c88cf8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class INT_TYPE > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">INT_TYPE </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">roundUpToNextMultiple</a> (INT_TYPE to_reach, INT_TYPE base)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Rounds an integer to the next multiple of another integer. <a href="#a8422b8f21a3e19bc1dcd4cc3a8447227"></a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">make_double_kernel</a> (std::string const &source, std::string platform_info)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Create a double precision kernel out of a single precision kernel. <a href="#acac5a5c4b9410d22c87a4286042a42b0"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Various little tools used here and there in ViennaCL. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/tools_8hpp_source.html b/doc/doxygen/html/tools_8hpp_source.html
deleted file mode 100644
index 366d769..0000000
--- a/doc/doxygen/html/tools_8hpp_source.html
+++ /dev/null
@@ -1,465 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/tools/tools.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="tools_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_TOOLS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_TOOLS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <string></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include <fstream></span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include <sstream></span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="adapter_8hpp.html" title="Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int...">viennacl/tools/adapter.hpp</a>"</span>
-<a name="l00027"></a>00027
-<a name="l00028"></a>00028
-<a name="l00029"></a>00029 <span class="preprocessor">#ifdef VIENNACL_HAVE_UBLAS </span>
-<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/ublas/matrix_sparse.hpp></span>
-<a name="l00031"></a>00031 <span class="preprocessor">#include <boost/numeric/ublas/matrix.hpp></span>
-<a name="l00032"></a>00032 <span class="preprocessor">#endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#ifdef VIENNACL_HAVE_EIGEN </span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <Eigen/Core></span>
-<a name="l00036"></a>00036 <span class="preprocessor">#include <Eigen/Sparse></span>
-<a name="l00037"></a>00037 <span class="preprocessor">#endif</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span>
-<a name="l00039"></a>00039 <span class="preprocessor">#ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include <boost/numeric/mtl/mtl.hpp></span>
-<a name="l00041"></a>00041 <span class="preprocessor">#endif</span>
-<a name="l00042"></a>00042 <span class="preprocessor"></span>
-<a name="l00043"></a>00043 <span class="preprocessor">#include <vector></span>
-<a name="l00044"></a>00044 <span class="preprocessor">#include <map></span>
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keyword">namespace </span>viennacl
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keyword">namespace </span>tools
-<a name="l00049"></a>00049 {
-<a name="l00050"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html">00050</a> <span class="keyword">namespace </span>traits
-<a name="l00051"></a>00051 {
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="comment">//Resize:</span>
-<a name="l00054"></a>00054 <span class="keyword">template</span> <<span class="keyword">typename</span> MatrixType>
-<a name="l00055"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">00055</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(MatrixType & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>, <span class="keywordtype">size_t</span> rows, <span class="keywordtype">size_t</span> cols)
-<a name="l00056"></a>00056 {
-<a name="l00057"></a>00057 matrix.resize(rows, cols);
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059
-<a name="l00060"></a>00060 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00061"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a331bbc1a30fe491fc4416993c336bc06">00061</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(VectorType & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, <span class="keywordtype">size_t</span> new_size)
-<a name="l00062"></a>00062 {
-<a name="l00063"></a>00063 vec.resize(new_size);
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 <span class="preprocessor"> #ifdef VIENNACL_HAVE_UBLAS </span>
-<a name="l00067"></a>00067 <span class="preprocessor"></span> <span class="comment">//ublas needs separate treatment:</span>
-<a name="l00068"></a>00068 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00069"></a>00069 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(boost::numeric::ublas::compressed_matrix<ScalarType> & <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix</a>,
-<a name="l00070"></a>00070 <span class="keywordtype">size_t</span> rows,
-<a name="l00071"></a>00071 <span class="keywordtype">size_t</span> cols)
-<a name="l00072"></a>00072 {
-<a name="l00073"></a>00073 matrix.resize(rows, cols, <span class="keyword">false</span>); <span class="comment">//Note: omitting third parameter leads to compile time error (not implemented in ublas <= 1.42) </span>
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075 <span class="preprocessor"> #endif </span>
-<a name="l00076"></a>00076 <span class="preprocessor"></span>
-<a name="l00077"></a>00077
-<a name="l00078"></a>00078 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00079"></a>00079 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(mtl::compressed2D<ScalarType> & matrix,
-<a name="l00081"></a>00081 <span class="keywordtype">size_t</span> rows,
-<a name="l00082"></a>00082 <span class="keywordtype">size_t</span> cols)
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 matrix.change_dim(rows, cols);
-<a name="l00085"></a>00085 }
-<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00088"></a>00088 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a2c970f9e5f6646b2c6de39d51a5a7e50">resize</a>(mtl::dense_vector<ScalarType> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00089"></a>00089 <span class="keywordtype">size_t</span> new_size)
-<a name="l00090"></a>00090 {
-<a name="l00091"></a>00091 vec.change_dim(new_size);
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 <span class="preprocessor"> #endif </span>
-<a name="l00094"></a>00094 <span class="preprocessor"></span>
-<a name="l00095"></a>00095 <span class="comment">//clear:</span>
-<a name="l00096"></a>00096 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00097"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">00097</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(VectorType & vec)
-<a name="l00098"></a>00098 {
-<a name="l00099"></a>00099 vec.clear();
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101
-<a name="l00102"></a>00102 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l00103"></a>00103 <span class="preprocessor"></span> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(Eigen::VectorXf & vec) { <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<vec.size(); ++i) vec[i] = 0; }
-<a name="l00104"></a>00104 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(Eigen::VectorXd & vec) { <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i<vec.size(); ++i) vec[i] = 0; }
-<a name="l00105"></a>00105 <span class="preprocessor"> #endif</span>
-<a name="l00106"></a>00106 <span class="preprocessor"></span>
-<a name="l00107"></a>00107 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00108"></a>00108 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00109"></a>00109 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#a1e44adefdd155bbd9a9d9a169f9ebcfb">clear</a>(mtl::dense_vector<ScalarType> & vec)
-<a name="l00110"></a>00110 {
-<a name="l00111"></a>00111 <span class="keywordflow">for</span> (<span class="keyword">typename</span> mtl::dense_vector<ScalarType>::size_type i=0;
-<a name="l00112"></a>00112 i<vec.used_memory();
-<a name="l00113"></a>00113 ++i)
-<a name="l00114"></a>00114 vec[i] = 0;
-<a name="l00115"></a>00115 }
-<a name="l00116"></a>00116 <span class="preprocessor"> #endif</span>
-<a name="l00117"></a>00117 <span class="preprocessor"></span>
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="comment">//size:</span>
-<a name="l00120"></a>00120 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType>
-<a name="l00121"></a><a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">00121</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(VectorType & vec)
-<a name="l00122"></a>00122 {
-<a name="l00123"></a>00123 <span class="keywordflow">return</span> vec.size();
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 <span class="preprocessor"> #ifdef VIENNACL_HAVE_MTL4</span>
-<a name="l00127"></a>00127 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00128"></a>00128 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(mtl::dense_vector<ScalarType> <span class="keyword">const</span> & vec) { <span class="keywordflow">return</span> vec.used_memory(); }
-<a name="l00129"></a>00129 <span class="preprocessor"> #endif</span>
-<a name="l00130"></a>00130 <span class="preprocessor"></span>
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132
-<a name="l00133"></a>00133
-<a name="l00134"></a>00134
-<a name="l00135"></a><a class="code" href="namespaceviennacl_1_1tools_1_1result__of.html">00135</a> <span class="keyword">namespace </span>result_of
-<a name="l00136"></a>00136 {
-<a name="l00137"></a>00137 <span class="comment">//value type:</span>
-<a name="l00138"></a>00138 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00139"></a><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">00139</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a>
-<a name="l00140"></a>00140 {
-<a name="l00141"></a><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html#aa325c13a882156e0897098ca1ccaf7fc">00141</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> T::value_type type;
-<a name="l00142"></a>00142 };
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN </span>
-<a name="l00145"></a>00145 <span class="preprocessor"></span> <span class="keyword">template</span> <>
-<a name="l00146"></a>00146 <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1result__of_1_1value__type.html">value_type</a><Eigen::MatrixXf>
-<a name="l00147"></a>00147 {
-<a name="l00148"></a>00148 <span class="keyword">typedef</span> Eigen::MatrixXf::RealScalar type;
-<a name="l00149"></a>00149 };
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="keyword">template</span> <>
-<a name="l00152"></a>00152 <span class="keyword">struct </span>value_type<Eigen::MatrixXd>
-<a name="l00153"></a>00153 {
-<a name="l00154"></a>00154 <span class="keyword">typedef</span> Eigen::MatrixXd::RealScalar type;
-<a name="l00155"></a>00155 };
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">int</span> option>
-<a name="l00158"></a>00158 <span class="keyword">struct </span>value_type<Eigen::SparseMatrix<ScalarType, option> >
-<a name="l00159"></a>00159 {
-<a name="l00160"></a>00160 <span class="keyword">typedef</span> ScalarType type;
-<a name="l00161"></a>00161 };
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keyword">template</span> <>
-<a name="l00164"></a>00164 <span class="keyword">struct </span>value_type<Eigen::VectorXf>
-<a name="l00165"></a>00165 {
-<a name="l00166"></a>00166 <span class="keyword">typedef</span> Eigen::VectorXf::RealScalar type;
-<a name="l00167"></a>00167 };
-<a name="l00168"></a>00168
-<a name="l00169"></a>00169 <span class="keyword">template</span> <>
-<a name="l00170"></a>00170 <span class="keyword">struct </span>value_type<Eigen::VectorXd>
-<a name="l00171"></a>00171 {
-<a name="l00172"></a>00172 <span class="keyword">typedef</span> Eigen::VectorXd::RealScalar type;
-<a name="l00173"></a>00173 };
-<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="preprocessor"> #endif</span>
-<a name="l00176"></a>00176 <span class="preprocessor"></span>
-<a name="l00177"></a>00177 }
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179
-<a name="l00180"></a>00180
-<a name="l00181"></a>00181
-<a name="l00183"></a>00183 <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00184"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html">00184</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a><viennacl::<a class="code" href="structviennacl_1_1row__iteration.html" title="A tag indicating iteration along increasing row index of a matrix.">row_iteration</a>, viennacl::matrix<SCALARTYPE, F, ALIGNMENT> >
-<a name="l00185"></a>00185 {
-<a name="l00186"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">00186</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1bca92c58b35c5ea472fa723e2dbcd14a.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & col) { ++row; }
-<a name="l00187"></a>00187 };
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keyword">template</span> <<span class="keyword">class</span> SCALARTYPE, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00190"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html">00190</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r.html">MATRIX_ITERATOR_INCREMENTER</a><viennacl::<a class="code" href="structviennacl_1_1col__iteration.html" title="A tag indicating iteration along increasing columns index of a matrix.">col_iteration</a>, viennacl::matrix<SCALARTYPE, F, ALIGNMENT> >
-<a name="l00191"></a>00191 {
-<a name="l00192"></a><a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">00192</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1tools_1_1_m_a_t_r_i_x___i_t_e_r_a_t_o_r___i_n_c_r_e_m_e_n_t_e_r_3_01viennacl_1c86a2c2a13c1f4853c9afb7871a47194.html#ae352c09bbded2dde5b8e14b174a52d9f">apply</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<SCALARTYPE, F, ALIGNMENT></a> & mat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & row, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> & col) { ++col; }
-<a name="l00193"></a>00193 };
-<a name="l00194"></a>00194
-<a name="l00195"></a>00195
-<a name="l00197"></a>00197 <span class="keyword">template</span> <<span class="keywordtype">bool</span> b, <span class="keyword">class</span> T = <span class="keywordtype">void</span>>
-<a name="l00198"></a><a class="code" href="structviennacl_1_1tools_1_1enable__if.html">00198</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">enable_if</a>
-<a name="l00199"></a>00199 {
-<a name="l00200"></a><a class="code" href="structviennacl_1_1tools_1_1enable__if.html#a565429e62c1d4fd084335146ba778e17">00200</a> <span class="keyword">typedef</span> T type;
-<a name="l00201"></a>00201 };
-<a name="l00202"></a>00202
-<a name="l00203"></a>00203 <span class="keyword">template</span> <<span class="keyword">class</span> T>
-<a name="l00204"></a><a class="code" href="structviennacl_1_1tools_1_1enable__if_3_01false_00_01_t_01_4.html">00204</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1enable__if.html" title="Simple enable-if variant that uses the SFINAE pattern.">enable_if</a><false, T> {};
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206
-<a name="l00208"></a>00208 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00209"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html">00209</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html" title="A guard that checks whether the floating point type of GPU types is either float or double...">CHECK_SCALAR_TEMPLATE_ARGUMENT</a>
-<a name="l00210"></a>00210 {
-<a name="l00211"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html#a465b19472e9fa1cbd9bbd334947c6042">00211</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> T::ERROR_SCALAR_MUST_HAVE_TEMPLATE_ARGUMENT_FLOAT_OR_DOUBLE ResultType;
-<a name="l00212"></a>00212 };
-<a name="l00213"></a>00213
-<a name="l00214"></a>00214 <span class="keyword">template</span> <>
-<a name="l00215"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html">00215</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html" title="A guard that checks whether the floating point type of GPU types is either float or double...">CHECK_SCALAR_TEMPLATE_ARGUMENT</a><float>
-<a name="l00216"></a>00216 {
-<a name="l00217"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">00217</a> <span class="keyword">typedef</span> <span class="keywordtype">float</span> ResultType;
-<a name="l00218"></a>00218 };
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keyword">template</span> <>
-<a name="l00221"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html">00221</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t.html" title="A guard that checks whether the floating point type of GPU types is either float or double...">CHECK_SCALAR_TEMPLATE_ARGUMENT</a><double>
-<a name="l00222"></a>00222 {
-<a name="l00223"></a><a class="code" href="structviennacl_1_1tools_1_1_c_h_e_c_k___s_c_a_l_a_r___t_e_m_p_l_a_t_e___a_r_g_u_m_e_n_t_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">00223</a> <span class="keyword">typedef</span> <span class="keywordtype">double</span> ResultType;
-<a name="l00224"></a>00224 };
-<a name="l00225"></a>00225
-<a name="l00226"></a>00226
-<a name="l00227"></a>00227
-<a name="l00233"></a><a class="code" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389">00233</a> <span class="keyword">inline</span> std::string <a class="code" href="namespaceviennacl_1_1tools.html#ae0476afc58ea44d5d67ffe7384f59389" title="Reads a text from a file into a std::string.">readTextFromFile</a>(<span class="keyword">const</span> std::string & filename)
-<a name="l00234"></a>00234 {
-<a name="l00235"></a>00235 std::ifstream f(filename.c_str());
-<a name="l00236"></a>00236 <span class="keywordflow">if</span> (!f) <span class="keywordflow">return</span> std::string();
-<a name="l00237"></a>00237
-<a name="l00238"></a>00238 std::stringstream result;
-<a name="l00239"></a>00239 std::string tmp;
-<a name="l00240"></a>00240 <span class="keywordflow">while</span> (std::getline(f, tmp))
-<a name="l00241"></a>00241 result << tmp << std::endl;
-<a name="l00242"></a>00242
-<a name="l00243"></a>00243 <span class="keywordflow">return</span> result.str();
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245
-<a name="l00253"></a><a class="code" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8">00253</a> <span class="keyword">inline</span> std::string <a class="code" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8" title="Replaces all occurances of a substring by another stringstream.">strReplace</a>(<span class="keyword">const</span> std::string & text, std::string to_search, std::string to_replace)
-<a name="l00254"></a>00254 {
-<a name="l00255"></a>00255 std::string::size_type pos = 0;
-<a name="l00256"></a>00256 std::string result;
-<a name="l00257"></a>00257 std::string::size_type found;
-<a name="l00258"></a>00258 <span class="keywordflow">while</span>( (found = text.find(to_search, pos)) != std::string::npos )
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 result.append(text.substr(pos,found-pos));
-<a name="l00261"></a>00261 result.append(to_replace);
-<a name="l00262"></a>00262 pos = found + to_search.length();
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (pos < text.length())
-<a name="l00265"></a>00265 result.append(text.substr(pos));
-<a name="l00266"></a>00266 <span class="keywordflow">return</span> result;
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268
-<a name="l00276"></a>00276 <span class="keyword">template</span> <<span class="keyword">class</span> INT_TYPE>
-<a name="l00277"></a><a class="code" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227">00277</a> INT_TYPE <a class="code" href="namespaceviennacl_1_1tools.html#a8422b8f21a3e19bc1dcd4cc3a8447227" title="Rounds an integer to the next multiple of another integer.">roundUpToNextMultiple</a>(INT_TYPE to_reach, INT_TYPE base)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 <span class="keywordflow">if</span> (to_reach % base == 0) <span class="keywordflow">return</span> to_reach;
-<a name="l00280"></a>00280 <span class="keywordflow">return</span> ((to_reach / base) + 1) * base;
-<a name="l00281"></a>00281 }
-<a name="l00282"></a>00282
-<a name="l00283"></a>00283
-<a name="l00290"></a><a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0">00290</a> <span class="keyword">inline</span> std::string <a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">make_double_kernel</a>(std::string <span class="keyword">const</span> & source, std::string platform_info)
-<a name="l00291"></a>00291 <span class="comment">//inline std::string make_double_kernel(std::string const & source)</span>
-<a name="l00292"></a>00292 {
-<a name="l00293"></a>00293 std::stringstream ss;
-<a name="l00294"></a>00294 <span class="keywordflow">if</span> (platform_info.compare(0, 8, <span class="stringliteral">"Advanced"</span>) == 0) <span class="comment">//double precision in Stream SDK is enabled by a non-standard pragma</span>
-<a name="l00295"></a>00295 ss << <span class="stringliteral">"#pragma OPENCL EXTENSION cl_amd_fp64 : enable\n\n"</span>;
-<a name="l00296"></a>00296 <span class="keywordflow">else</span>
-<a name="l00297"></a>00297 ss << <span class="stringliteral">"#pragma OPENCL EXTENSION cl_khr_fp64 : enable\n\n"</span>;
-<a name="l00298"></a>00298
-<a name="l00299"></a>00299 std::string result = ss.str();
-<a name="l00300"></a>00300 result.append(<a class="code" href="namespaceviennacl_1_1tools.html#aabca73e564ff14ed639cfe0a94c88cf8" title="Replaces all occurances of a substring by another stringstream.">strReplace</a>(source, <span class="stringliteral">"float"</span>, <span class="stringliteral">"double"</span>));
-<a name="l00301"></a>00301 <span class="keywordflow">return</span> result;
-<a name="l00302"></a>00302 }
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304
-<a name="l00306"></a>00306 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00307"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html">00307</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html" title="Removes the const qualifier from a type.">CONST_REMOVER</a>
-<a name="l00308"></a>00308 {
-<a name="l00309"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">00309</a> <span class="keyword">typedef</span> T ResultType;
-<a name="l00310"></a>00310 };
-<a name="l00311"></a>00311
-<a name="l00312"></a>00312 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00313"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html">00313</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html" title="Removes the const qualifier from a type.">CONST_REMOVER</a><const T>
-<a name="l00314"></a>00314 {
-<a name="l00315"></a><a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r_3_01const_01_t_01_4.html#a13d3ccc8836027e5b399582861553350">00315</a> <span class="keyword">typedef</span> T ResultType;
-<a name="l00316"></a>00316 };
-<a name="l00317"></a>00317
-<a name="l00318"></a>00318
-<a name="l00324"></a>00324 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS>
-<a name="l00325"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html">00325</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a>
-<a name="l00326"></a>00326 {
-<a name="l00327"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html#a9939181a319c04ab48a0d60cbe6e7dd9">00327</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> LHS::ERROR_COULD_NOT_EXTRACT_VECTOR_INFORMATION_FROM_VECTOR_EXPRESSION ResultType;
-<a name="l00328"></a>00328 };
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00331"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html">00331</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a><LHS, viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A> >
-<a name="l00332"></a>00332 {
-<a name="l00333"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01_l_h_s_00_01viennacl_1882605388412d3966461746c5b88eabd.html#ae695f3958fa24d64fdbaf3e978e0ea1c">00333</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">ResultType</a>;
-<a name="l00334"></a>00334 };
-<a name="l00335"></a>00335
-<a name="l00336"></a>00336 <span class="keyword">template</span> <<span class="keyword">typename</span> RHS, <span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00337"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html">00337</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a><viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, RHS>
-<a name="l00338"></a>00338 {
-<a name="l00339"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06f3e35bbd0fe5f0dc2637861e914c68d.html#ae695f3958fa24d64fdbaf3e978e0ea1c">00339</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">ResultType</a>;
-<a name="l00340"></a>00340 };
-<a name="l00341"></a>00341
-<a name="l00342"></a>00342 <span class="comment">//resolve ambiguities for previous cases:</span>
-<a name="l00343"></a>00343 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00344"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html">00344</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL</a><viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A> >
-<a name="l00345"></a>00345 {
-<a name="l00346"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l_3_01viennacl_1_1vector_3_06c4b94a78124174dcdfa8958e33b87aa.html#ae695f3958fa24d64fdbaf3e978e0ea1c">00346</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">ResultType</a>;
-<a name="l00347"></a>00347 };
-<a name="l00348"></a>00348
-<a name="l00349"></a>00349 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS>
-<a name="l00350"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">00350</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html">VECTOR_EXTRACTOR</a>
-<a name="l00351"></a>00351 {
-<a name="l00352"></a>00352 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r___i_m_p_l.html" title="Extracts the vector type from one of the two arguments. Used for the vector_expression type...">VECTOR_EXTRACTOR_IMPL<typename CONST_REMOVER<LHS>::ResultType</a>,
-<a name="l00353"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">00353</a> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_c_o_n_s_t___r_e_m_o_v_e_r.html#a13d3ccc8836027e5b399582861553350">CONST_REMOVER<RHS>::ResultType</a>><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">::ResultType</a> ResultType;
-<a name="l00354"></a>00354 };
-<a name="l00355"></a>00355
-<a name="l00362"></a>00362 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00363"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html">00363</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a>
-<a name="l00364"></a>00364 {
-<a name="l00365"></a>00365 <span class="comment">//take care: using a plain, naive .size() on the left hand side type can cause subtle side-effects!</span>
-<a name="l00366"></a>00366 };
-<a name="l00367"></a>00367
-<a name="l00368"></a>00368 <span class="comment">//Standard case: LHS is the vector type and carries the correct size</span>
-<a name="l00369"></a>00369 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> RHS>
-<a name="l00370"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html">00370</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, RHS, viennacl::op_prod>
-<a name="l00371"></a>00371 {
-<a name="l00372"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vectorf4cf407ac0aa03bae20dc948ae498874.html#ada291f3a68989aac52d341b8d8e396b3">00372</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & lhs,
-<a name="l00373"></a>00373 <span class="keyword">const</span> RHS & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>(); }
-<a name="l00374"></a>00374 };
-<a name="l00375"></a>00375
-<a name="l00376"></a>00376 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> RHS>
-<a name="l00377"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html">00377</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, RHS, viennacl::op_div>
-<a name="l00378"></a>00378 {
-<a name="l00379"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1vector1d9d7c0bd54abdb46687e9992a1b2364.html#ada291f3a68989aac52d341b8d8e396b3">00379</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & lhs,
-<a name="l00380"></a>00380 <span class="keyword">const</span> RHS & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>(); }
-<a name="l00381"></a>00381 };
-<a name="l00382"></a>00382
-<a name="l00383"></a>00383 <span class="comment">//special case: matrix-vector product: Return the number of rows of the matrix</span>
-<a name="l00384"></a>00384 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00385"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html">00385</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::matrix<ScalarType, F, Amat>, const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::op_prod>
-<a name="l00386"></a>00386 {
-<a name="l00387"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix094096b2af2039d3a62b949933f071cc.html#ad135912731852cebdfa2c996d57dd4a5">00387</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F, Amat></a> & lhs,
-<a name="l00388"></a>00388 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); }
-<a name="l00389"></a>00389 };
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00392"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html">00392</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix</a><ScalarType, Amat>, const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::op_prod>
-<a name="l00393"></a>00393 {
-<a name="l00394"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1compre72f8c36b49715732585144dd1f368b2e.html#aba827ef7d82c4a95c0293eac77a9a495">00394</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">viennacl::compressed_matrix<ScalarType, Amat></a> & lhs,
-<a name="l00395"></a>00395 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1compressed__matrix.html#a10aa70c5b59457061b66e118e8fc05e4" title="Returns the number of rows.">size1</a>(); }
-<a name="l00396"></a>00396 };
-<a name="l00397"></a>00397
-<a name="l00398"></a>00398 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00399"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html">00399</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix</a><ScalarType, Amat>, const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>, viennacl::op_prod>
-<a name="l00400"></a>00400 {
-<a name="l00401"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1coordiace9c1a5d5480abb777bf7069e8bef17.html#aa843af9061cf09ded02f2c5c5edb93e0">00401</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">viennacl::coordinate_matrix<ScalarType, Amat></a> & lhs,
-<a name="l00402"></a>00402 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.<a class="code" href="classviennacl_1_1coordinate__matrix.html#a890ed2f6c982169c737bd4f68b2a5db7" title="Returns the number of rows.">size1</a>(); }
-<a name="l00403"></a>00403 };
-<a name="l00404"></a>00404
-<a name="l00405"></a>00405 <span class="comment">//special case: transposed matrix-vector product: Return the number of cols(!) of the matrix</span>
-<a name="l00406"></a>00406 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> Amat, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00407"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html">00407</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r.html" title="Deduces the size of the resulting vector represented by a vector_expression from the operands...">VECTOR_SIZE_DEDUCER</a><const viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< const viennacl::matrix<ScalarType, F, Amat>,
-<a name="l00408"></a>00408 const viennacl::matrix<ScalarType, F, Amat>,
-<a name="l00409"></a>00409 op_trans>,
-<a name="l00410"></a>00410 const viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><ScalarType, A>,
-<a name="l00411"></a>00411 viennacl::op_prod>
-<a name="l00412"></a>00412 {
-<a name="l00413"></a><a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___s_i_z_e___d_e_d_u_c_e_r_3_01const_01viennacl_1_1matrix83988a36e43e5d352f1d786ea65cadcf.html#afafa70095b248b947c523711ff4cd357">00413</a> <span class="keyword">static</span> <span class="keywordtype">size_t</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">viennacl::matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F, Amat></a>,
-<a name="l00414"></a>00414 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">viennacl::matrix<ScalarType, F, Amat></a>,
-<a name="l00415"></a>00415 op_trans> & lhs,
-<a name="l00416"></a>00416 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<ScalarType, A></a> & rhs) { <span class="keywordflow">return</span> lhs.lhs().size2(); }
-<a name="l00417"></a>00417 };
-<a name="l00418"></a>00418
-<a name="l00419"></a>00419
-<a name="l00420"></a>00420
-<a name="l00421"></a>00421
-<a name="l00422"></a>00422
-<a name="l00427"></a>00427 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00428"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html">00428</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">CPU_SCALAR_TYPE_DEDUCER</a>
-<a name="l00429"></a>00429 {
-<a name="l00430"></a>00430 <span class="comment">//force compiler error if type cannot be deduced</span>
-<a name="l00431"></a>00431 <span class="comment">//typedef T ResultType;</span>
-<a name="l00432"></a>00432 };
-<a name="l00433"></a>00433
-<a name="l00434"></a>00434 <span class="keyword">template</span> <>
-<a name="l00435"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html">00435</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">CPU_SCALAR_TYPE_DEDUCER</a>< float >
-<a name="l00436"></a>00436 {
-<a name="l00437"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01float_01_4.html#ae663109a95092b45704754292ae4f4c0">00437</a> <span class="keyword">typedef</span> <span class="keywordtype">float</span> ResultType;
-<a name="l00438"></a>00438 };
-<a name="l00439"></a>00439
-<a name="l00440"></a>00440 <span class="keyword">template</span> <>
-<a name="l00441"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html">00441</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">CPU_SCALAR_TYPE_DEDUCER</a>< double >
-<a name="l00442"></a>00442 {
-<a name="l00443"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01double_01_4.html#a9a1247a9213f552c041fd48cbd89042c">00443</a> <span class="keyword">typedef</span> <span class="keywordtype">double</span> ResultType;
-<a name="l00444"></a>00444 };
-<a name="l00445"></a>00445
-<a name="l00446"></a>00446 <span class="keyword">template</span> <<span class="keyword">typename</span> T>
-<a name="l00447"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html">00447</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar</a><T> >
-<a name="l00448"></a>00448 {
-<a name="l00449"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1scalar_3_01_t_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">00449</a> <span class="keyword">typedef</span> T ResultType;
-<a name="l00450"></a>00450 };
-<a name="l00451"></a>00451
-<a name="l00452"></a>00452 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00453"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html">00453</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><T, A> >
-<a name="l00454"></a>00454 {
-<a name="l00455"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1vector_3_01_t_00_01_a_01_4_01_4.html#a13d3ccc8836027e5b399582861553350">00455</a> <span class="keyword">typedef</span> T ResultType;
-<a name="l00456"></a>00456 };
-<a name="l00457"></a>00457
-<a name="l00458"></a>00458 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00459"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html">00459</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::matrix<T, F, A> >
-<a name="l00460"></a>00460 {
-<a name="l00461"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix642aa47fe2fbcec2c09c89f1231135d2.html#a13d3ccc8836027e5b399582861553350">00461</a> <span class="keyword">typedef</span> T ResultType;
-<a name="l00462"></a>00462 };
-<a name="l00463"></a>00463
-<a name="l00464"></a>00464
-<a name="l00465"></a>00465 <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l00466"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html">00466</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r.html" title="Obtain the cpu scalar type from a type, including a GPU type like viennacl::scalar<T>">CPU_SCALAR_TYPE_DEDUCER</a>< viennacl::<a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a><const matrix<T, F, A>, const matrix<T, F, A>, op_trans> >
-<a name="l00467"></a>00467 {
-<a name="l00468"></a><a class="code" href="structviennacl_1_1tools_1_1_c_p_u___s_c_a_l_a_r___t_y_p_e___d_e_d_u_c_e_r_3_01viennacl_1_1matrix55bdfdc64a4c04550e4b2fd3f7b67dd1.html#a13d3ccc8836027e5b399582861553350">00468</a> <span class="keyword">typedef</span> T ResultType;
-<a name="l00469"></a>00469 };
-<a name="l00470"></a>00470
-<a name="l00471"></a>00471
-<a name="l00472"></a>00472 } <span class="comment">//namespace tools</span>
-<a name="l00473"></a>00473 } <span class="comment">//namespace viennacl</span>
-<a name="l00474"></a>00474
-<a name="l00475"></a>00475
-<a name="l00476"></a>00476 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/utils_8hpp.html b/doc/doxygen/html/utils_8hpp.html
deleted file mode 100644
index b633e6a..0000000
--- a/doc/doxygen/html/utils_8hpp.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include <vector></code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-
-<p><a href="utils_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">DOUBLE_PRECISION_CHECKER< ScalarType ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a <a class="el" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">double_precision_not_provided_error</a> is thrown. <a href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">DOUBLE_PRECISION_CHECKER< double ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1ocl.html">viennacl::ocl</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/utils_8hpp_source.html b/doc/doxygen/html/utils_8hpp_source.html
deleted file mode 100644
index fa02cca..0000000
--- a/doc/doxygen/html/utils_8hpp_source.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/ocl/utils.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="utils_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_OCL_UTILS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_OCL_UTILS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include <vector></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00025"></a>00025
-<a name="l00026"></a>00026 <span class="keyword">namespace </span>viennacl
-<a name="l00027"></a>00027 {
-<a name="l00028"></a>00028 <span class="keyword">namespace </span>ocl
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030
-<a name="l00033"></a>00033 <span class="keyword">template</span> <<span class="keyword">typename</span> ScalarType>
-<a name="l00034"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html">00034</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">DOUBLE_PRECISION_CHECKER</a>
-<a name="l00035"></a>00035 {
-<a name="l00036"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">00036</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">apply</a>() {}
-<a name="l00037"></a>00037 };
-<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <span class="keyword">template</span> <>
-<a name="l00040"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html">00040</a> <span class="keyword">struct </span><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">DOUBLE_PRECISION_CHECKER</a><double>
-<a name="l00041"></a>00041 {
-<a name="l00042"></a><a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r_3_01double_01_4.html#acd62521bdbf7f991a885f126413e6f89">00042</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html#acd62521bdbf7f991a885f126413e6f89">apply</a>()
-<a name="l00043"></a>00043 {
-<a name="l00044"></a>00044 <span class="keywordflow">if</span> (!<a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().double_support())
-<a name="l00045"></a>00045 <span class="keywordflow">throw</span> <a class="code" href="classviennacl_1_1ocl_1_1double__precision__not__provided__error.html">viennacl::ocl::double_precision_not_provided_error</a>();
-<a name="l00046"></a>00046 }
-<a name="l00047"></a>00047 };
-<a name="l00048"></a>00048
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050
-<a name="l00051"></a>00051 } <span class="comment">//ocl</span>
-<a name="l00052"></a>00052 } <span class="comment">//viennacl</span>
-<a name="l00053"></a>00053 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector_8hpp.html b/doc/doxygen/html/vector_8hpp.html
deleted file mode 100644
index 7d69702..0000000
--- a/doc/doxygen/html/vector_8hpp.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations such as norms and inner products are located in <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">linalg/vector_operations.hpp</a>.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="backend_8hpp_source.html">viennacl/ocl/backend.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="entry__proxy_8hpp_source.html">viennacl/tools/entry_proxy.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__operations_8hpp_source.html">viennacl/linalg/vector_operations.hpp</a>"</code><br/>
-
-<p><a href="vector_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__expression.html">vector_expression< LHS, RHS, OP ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">An expression template class that represents a binary operation that yields a vector. <a href="classviennacl_1_1vector__expression.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1const__vector__iterator.html">const_vector_iterator< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated. VERY SLOW!! <a href="classviennacl_1_1const__vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector__iterator.html">vector_iterator< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!! <a href="classviennacl_1_1vector__iterator.html#_details">More...</a><br/></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classviennacl_1_1vector.html">vector< SCALARTYPE, ALIGNMENT ></a></td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::vector. <a href="classviennacl_1_1vector.html#_details">More...</a><br/></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a7953e64a62d2209621a3f4a505dc9f9e">copy</a> (const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. <a href="#a7953e64a62d2209621a3f4a505dc9f9e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a6713b60b19010992ea611ef7ecd4fdf2">copy</a> (const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. <a href="#a6713b60b19010992ea611ef7ecd4fdf2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb5884675d2f3a9ca1a57a3a722aa78a">copy</a> (vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. <a href="#afb5884675d2f3a9ca1a57a3a722aa78a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9c694a91cf3e54637ed6a05ab7d9ce75">fast_copy</a> (const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_begin, const const_vector_iterator< SCALARTYPE, ALIGNMENT > &gpu_end, CPU_ITERATOR cpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a GPU vector to the CPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. <a href="#a9c694a91cf3e54637ed6a05ab7d9ce75"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aad3621936e6071d2777aae22a5f891ec">fast_copy</a> (vector< SCALARTYPE, ALIGNMENT > const &gpu_vec, CPUVECTOR &cpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a gpu vector to a cpu vector. Convenience wrapper for viennacl::linalg::fast_copy(gpu_vec.begin(), gpu_vec.end(), cpu_vec.begin());. <a href="#aad3621936e6071d2777aae22a5f891ec"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer for the entries of a GPU vector to the CPU. The cpu type does not need to lie in a linear piece of memory. <a href="#afb1db189fa5cd8ee4a8222d8b87f3ab0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a12da6187594db18ae7aa4874e1ad3f1d">copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, const_vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0d4fd919fa235b1c7dabd0049740e774">copy</a> (const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. <a href="#a0d4fd919fa235b1c7dabd0049740e774"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPU_ITERATOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9250bb8c996f6eab600899146e0cbf26">fast_copy</a> (CPU_ITERATOR const &cpu_begin, CPU_ITERATOR const &cpu_end, vector_iterator< SCALARTYPE, ALIGNMENT > gpu_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">STL-like transfer of a CPU vector to the GPU. The cpu type is assumed to reside in a linear piece of memory, such as e.g. for std::vector. <a href="#a9250bb8c996f6eab600899146e0cbf26"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT, typename CPUVECTOR > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af7146b5952b3532c74728adc05d4de55">fast_copy</a> (const CPUVECTOR &cpu_vec, vector< SCALARTYPE, ALIGNMENT > &gpu_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a cpu vector to a gpu vector. Convenience wrapper for viennacl::linalg::fast_copy(cpu_vec.begin(), cpu_vec.end(), gpu_vec.begin());. <a href="#af7146b5952b3532c74728adc05d4de55"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector. <a href="#af638a30a9dd2001143b4c92072c76d48"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">copy</a> (const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_begin, const_vector_iterator< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_end, const_vector_iterator< SCALARTYPE, ALIGNMENT_DEST > gpu_dest_begin)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Copy (parts of a) GPU vector to another GPU vector. <a href="#a9164bd549b986f39b035c24a426869b9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT_SRC, unsigned int ALIGNMENT_DEST> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ad823fb30fd180da375a1e09d56c0a1b8">copy</a> (vector< SCALARTYPE, ALIGNMENT_SRC > const &gpu_src_vec, vector< SCALARTYPE, ALIGNMENT_DEST > &gpu_dest_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Transfer from a ViennaCL vector to another ViennaCL vector. Convenience wrapper for viennacl::linalg::copy(gpu_src_vec.begin(), gpu_src_vec.end(), gpu_dest_vec.begin());. <a href="#ad823fb30fd180da375a1e09d56c0a1b8"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">std::ostream & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a5e572599ddbae8812154538849fa707c">operator<<</a> (std::ostream &s, vector< SCALARTYPE, ALIGNMENT > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Output stream. Output format is ublas compatible. <a href="#a5e572599ddbae8812154538849fa707c"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">swap</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the contents of two vectors, data is copied. <a href="#a0c01dfab44c6d3849f7d0eac55539142"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, ALIGNMENT > & </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">fast_swap</a> (vector< SCALARTYPE, ALIGNMENT > &v1, vector< SCALARTYPE, ALIGNMENT > &v2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied. <a href="#a976181b1f6aa698b64a4746f0949fce0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< const <br class="typebreak"/>
-vector< SCALARTYPE, A >, const <br class="typebreak"/>
-SCALARTYPE, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aa60d7cda126efd13c3413453606850b7">operator*</a> (SCALARTYPE const &value, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a host scalar (float or double) and v1 is a ViennaCL vector. <a href="#aa60d7cda126efd13c3413453606850b7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< const <br class="typebreak"/>
-vector< SCALARTYPE, A >, const <br class="typebreak"/>
-scalar< SCALARTYPE >, op_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3b34a609403378a81c3a2589a5418077">operator*</a> (scalar< SCALARTYPE > const &value, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the expression alpha * v1, where alpha is a ViennaCL scalar (float or double) and v1 is a ViennaCL vector. <a href="#a3b34a609403378a81c3a2589a5418077"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">operator+</a> (vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of two vector expressions. <a href="#aae3143a0fbb9e586b489cea90acf6659"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename LHS1 , typename RHS1 , typename OP1 , typename LHS2 , typename RHS2 , typename OP2 > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector_expression< LHS1, RHS1, <br class="typebreak"/>
-OP1 >::VectorType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57">operator-</a> (vector_expression< LHS1, RHS1, OP1 > const &proxy1, vector_expression< LHS2, RHS2, OP2 > const &proxy2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of two vector expressions. <a href="#a77d42d098f9212ba53487deb6ddacf57"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a0808ef51d9a2d2e1ecbed3d4b63e159f">operator+</a> (vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the addition of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. <a href="#a0808ef51d9a2d2e1ecbed3d4b63e159f"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , unsigned int A, typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE, A > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">operator-</a> (vector_expression< LHS, RHS, OP > const &proxy, vector< SCALARTYPE, A > const &vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the subtraction of a vector expression from the left, e.g. alpha * vec1 + vec2. Here, alpha * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then added to vec2. <a href="#ae00e47f8124b08cbeb8b7fc9ff537081"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a00f47d8ad32713f98c6979c245b88cdb">operator*</a> (vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a scalar from the right, e.g. (beta * vec1) * alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the right. <a href="#a00f47d8ad32713f98c6979c245b88cdb"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">operator/</a> (vector_expression< LHS, RHS, OP > const &proxy, scalar< SCALARTYPE > const &val)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then divided by alpha. <a href="#a3aeb5b431a9c6d0b3af24a1513e8e9ad"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">vector< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a66a24c58d27c6368ac879f4d7cc4cfc9">operator*</a> (scalar< SCALARTYPE > const &val, vector_expression< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a ViennaCL scalar from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. <a href="#a66a24c58d27c6368ac879f4d7cc4cfc9"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename SCALARTYPE , typename LHS , typename RHS , typename OP > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html#a4522333fedaf508711a5aa02c47e5c7a">operator*</a> (SCALARTYPE val, <a class="el" href="classviennacl_1_1vector__expression.html">viennacl::vector_expression</a>< LHS, RHS, OP > const &proxy)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Operator overload for the multiplication of a vector expression with a host scalar (float or double) from the left, e.g. alpha * (beta * vec1). Here, beta * vec1 is wrapped into a <a class="el" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a> and then multiplied with alpha from the left. <a href="#a4522333fedaf508711a5aa02c47e5c7a"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>The vector type with operator-overloads and proxy classes is defined here. Linear algebra operations such as norms and inner products are located in <a class="el" href="vector__operations_8hpp.html" title="Implementations of vector operations.">linalg/vector_operations.hpp</a>. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector_8hpp_source.html b/doc/doxygen/html/vector_8hpp_source.html
deleted file mode 100644
index 26a398f..0000000
--- a/doc/doxygen/html/vector_8hpp_source.html
+++ /dev/null
@@ -1,1132 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/vector.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="vector_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00020"></a>00020 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_HPP_</span>
-<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_HPP_</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="backend_8hpp.html" title="Implementations of the OpenCL backend, where all contexts are stored in.">viennacl/ocl/backend.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="entry__proxy_8hpp.html" title="A proxy class for entries in a vector.">viennacl/tools/entry_proxy.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="vector__operations_8hpp.html" title="Implementations of vector operations.">viennacl/linalg/vector_operations.hpp</a>"</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>viennacl
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032
-<a name="l00045"></a>00045 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00046"></a><a class="code" href="classviennacl_1_1vector__expression.html">00046</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>
-<a name="l00047"></a>00047 {
-<a name="l00048"></a>00048 <span class="keyword">public</span>:
-<a name="l00051"></a><a class="code" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067">00051</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="structviennacl_1_1tools_1_1_v_e_c_t_o_r___e_x_t_r_a_c_t_o_r.html#a9e7f3539ef2e71a6b4d199d882a40da0">viennacl::tools::VECTOR_EXTRACTOR<LHS, RHS>::ResultType</a> VectorType;
-<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">00053</a> <a class="code" href="classviennacl_1_1vector__expression.html#a47b51aeee8120fa441f37d71f56b12c7">vector_expression</a>(LHS & <a class="code" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>, RHS & <a class="code" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>) : _lhs(lhs), _rhs(rhs) {}
-<a name="l00054"></a>00054
-<a name="l00057"></a><a class="code" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830">00057</a> LHS & <a class="code" href="classviennacl_1_1vector__expression.html#abb680866089de4e937ddc6ce6f1f1830" title="Get left hand side operand.">lhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _lhs; }
-<a name="l00060"></a><a class="code" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82">00060</a> RHS & <a class="code" href="classviennacl_1_1vector__expression.html#a563f5aecaa0755006225235e44a11a82" title="Get right hand side operand.">rhs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _rhs; }
-<a name="l00061"></a>00061
-<a name="l00063"></a><a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812">00063</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">viennacl::tools::VECTOR_SIZE_DEDUCER<LHS, RHS, OP>::size</a>(_lhs, _rhs); }
-<a name="l00064"></a>00064
-<a name="l00065"></a>00065 <span class="keyword">private</span>:
-<a name="l00067"></a>00067 LHS & _lhs;
-<a name="l00069"></a>00069 RHS & _rhs;
-<a name="l00070"></a>00070 };
-<a name="l00071"></a>00071
-<a name="l00090"></a>00090 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00091"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html">00091</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator</a>
-<a name="l00092"></a>00092 {
-<a name="l00093"></a>00093 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a>;
-<a name="l00094"></a>00094 <span class="keyword">public</span>:
-<a name="l00095"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#ae59e37ebbe3a193fa2dd307e94d99518">00095</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00096"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">00096</a> <span class="keyword">typedef</span> <span class="keywordtype">long</span> difference_type;
-<a name="l00097"></a>00097
-<a name="l00098"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">00098</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#ac6a7762dba62eaf3d6379fc12481b559">const_vector_iterator</a>() {};
-<a name="l00103"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b">00103</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#aa8e2e53d1a9740dc9a7e5dc30b03734b" title="Constructor.">const_vector_iterator</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, cl_uint <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>) : <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>(vec.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>()), <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>(index) {};
-<a name="l00104"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a9cf058c9dc4e611bc1a4c0690fe02492">00104</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a9cf058c9dc4e611bc1a4c0690fe02492">const_vector_iterator</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & elements, cl_uint <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>) : <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>(elements), <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>(index) {};
-<a name="l00105"></a>00105
-<a name="l00106"></a>00106
-<a name="l00107"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">00107</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a832e184e247b97ecb752bf291d814dff">operator*</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>
-<a name="l00108"></a>00108 <span class="keyword"> </span>{
-<a name="l00109"></a>00109 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a> result;
-<a name="l00110"></a>00110 result = <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>);
-<a name="l00111"></a>00111 <span class="keywordflow">return</span> result;
-<a name="l00112"></a>00112 }
-<a name="l00113"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">00113</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a0b50df67a5cd6493e8839fd8990500a7">operator++</a>(<span class="keywordtype">void</span>) { ++<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
-<a name="l00114"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a39f7c37604fd9845ff487b36b6f88602">00114</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a39f7c37604fd9845ff487b36b6f88602">operator++</a>(<span class="keywordtype">int</span>) { <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> tmp = *<span class="keyword">this</span>; ++(*this); <span class="keywordflow">return</span> tmp; }
-<a name="l00115"></a>00115
-<a name="l00116"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">00116</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#ae01970b831b1c1dc3a9f22f7a4e19cf6">operator==</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a> == other.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00117"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">00117</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a0c704f6470bc4c7392b964dd83a1d97b">operator!=</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a> != other.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="comment">// self_type & operator=(self_type const & other)</span>
-<a name="l00120"></a>00120 <span class="comment">// {</span>
-<a name="l00121"></a>00121 <span class="comment">// _index = other._index;</span>
-<a name="l00122"></a>00122 <span class="comment">// elements_ = other._elements;</span>
-<a name="l00123"></a>00123 <span class="comment">// return *this;</span>
-<a name="l00124"></a>00124 <span class="comment">// } </span>
-<a name="l00125"></a>00125
-<a name="l00126"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">00126</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#aec7de6121b5440524976b3baf978fb5c">operator-</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <span class="keyword">const</span> & other)<span class="keyword"> const </span>{ <a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> result = <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; <span class="keywordflow">return</span> result - other.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00127"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">00127</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a63fe5e79738641bc4c5fd1f07740e3c7">operator+</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a8ad60a9ff2530781950dbfd682353e64">difference_type</a> diff)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a> + diff); }
-<a name="l00128"></a>00128
-<a name="l00129"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">00129</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>; }
-<a name="l00130"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">00130</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & <a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>; }
-<a name="l00131"></a>00131
-<a name="l00132"></a>00132 <span class="keyword">protected</span>:
-<a name="l00134"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc">00134</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">elements_</a>;
-<a name="l00135"></a><a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">00135</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">index_</a>;
-<a name="l00136"></a>00136 };
-<a name="l00137"></a>00137
-<a name="l00138"></a>00138
-<a name="l00158"></a>00158 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00159"></a><a class="code" href="classviennacl_1_1vector__iterator.html">00159</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator</a> : <span class="keyword">public</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator</a><SCALARTYPE, ALIGNMENT>
-<a name="l00160"></a>00160 {
-<a name="l00161"></a>00161 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>;
-<a name="l00162"></a>00162 <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">self_type</a>;
-<a name="l00163"></a>00163 <span class="keyword">public</span>:
-<a name="l00164"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">00164</a> <a class="code" href="classviennacl_1_1vector__iterator.html#a870d4c95600057004f7f4022a87bcf2a">vector_iterator</a>() : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(){};
-<a name="l00165"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a85d26854f63fc4da7b9f64f1dc1885b6">00165</a> <a class="code" href="classviennacl_1_1vector__iterator.html#a85d26854f63fc4da7b9f64f1dc1885b6">vector_iterator</a>(<a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <span class="keyword">const</span> & elements, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>) : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(elements, index) {};
-<a name="l00170"></a><a class="code" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88">00170</a> <a class="code" href="classviennacl_1_1vector__iterator.html#ab2e550b8717745228f53d20fa8cd4a88" title="Constructor.">vector_iterator</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>, cl_uint <a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>) : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(vec, index) {};
-<a name="l00171"></a><a class="code" href="classviennacl_1_1vector__iterator.html#ad856d30aabbab284be47dcf0a38c0693">00171</a> <a class="code" href="classviennacl_1_1vector__iterator.html#ad856d30aabbab284be47dcf0a38c0693">vector_iterator</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a> <span class="keyword">const</span> & b) : <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(b) {};
-<a name="l00172"></a>00172
-<a name="l00173"></a><a class="code" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">00173</a> <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">base_type::value_type</a> <a class="code" href="classviennacl_1_1vector__iterator.html#aca896a4673a17317ad7068e8b769a6c8">operator*</a>(<span class="keywordtype">void</span>)
-<a name="l00174"></a>00174 {
-<a name="l00175"></a>00175 <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">base_type::value_type</a> result;
-<a name="l00176"></a>00176 result = <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">base_type::index_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">base_type::elements_</a>);
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> result;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179
-<a name="l00180"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">00180</a> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> <a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>() { <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">base_type::elements_</a>; }
-<a name="l00181"></a>00181
-<a name="l00182"></a><a class="code" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">00182</a> <a class="code" href="classviennacl_1_1vector__iterator.html#a327ab3f759dae4072bfabbef27d7a981">operator base_type</a>()<span class="keyword"> const</span>
-<a name="l00183"></a>00183 <span class="keyword"> </span>{
-<a name="l00184"></a>00184 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">base_type</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html#a620028b02247d371f9637f6a648a13cc" title="The index of the entry the iterator is currently pointing to.">base_type::elements_</a>, <a class="code" href="classviennacl_1_1const__vector__iterator.html#a961e8f62e2b57b3021c417a2c61dfb82">base_type::index_</a>);
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186 };
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 <span class="comment">// forward definition in VCLForwards.h!</span>
-<a name="l00197"></a>00197 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00198"></a><a class="code" href="classviennacl_1_1vector.html">00198</a> <span class="keyword">class </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a>
-<a name="l00199"></a>00199 {
-<a name="l00200"></a>00200
-<a name="l00201"></a>00201 <span class="keyword">public</span>:
-<a name="l00202"></a><a class="code" href="classviennacl_1_1vector.html#aed985c700866b1bae61cb8bcd5d322fe">00202</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType</a>> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">value_type</a>;
-<a name="l00203"></a><a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">00203</a> <span class="keyword">typedef</span> <a class="code" href="namespaceviennacl.html#a151281d5407af580310fed77af40f052">vcl_size_t</a> size_type;
-<a name="l00204"></a><a class="code" href="classviennacl_1_1vector.html#a1d7ed47a15fea60d02986112826f40bc">00204</a> <span class="keyword">typedef</span> <a class="code" href="namespaceviennacl.html#aa2aeb075792a4f72abdd84b393d41869">vcl_ptrdiff_t</a> difference_type;
-<a name="l00205"></a><a class="code" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">00205</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_iterator</a>;
-<a name="l00206"></a><a class="code" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">00206</a> <span class="keyword">typedef</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">iterator</a>;
-<a name="l00207"></a>00207
-<a name="l00210"></a><a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383">00210</a> <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>() : size_(0) { viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::init(); }
-<a name="l00211"></a>00211
-<a name="l00216"></a><a class="code" href="classviennacl_1_1vector.html#a37af05b711e0806bd57ae6e4adfeb46e">00216</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size) : size_(vec_size)
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::init();
-<a name="l00219"></a>00219
-<a name="l00220"></a>00220 <span class="keywordflow">if</span> (size_ > 0)
-<a name="l00221"></a>00221 elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 <span class="comment">//force entries above size_ to zero:</span>
-<a name="l00224"></a>00224 <span class="keywordflow">if</span> (size_ < <a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())
-<a name="l00225"></a>00225 {
-<a name="l00226"></a>00226 std::vector<SCALARTYPE> temp(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>() - size_);
-<a name="l00227"></a>00227 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*size_, <span class="keyword">sizeof</span>(SCALARTYPE)*(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>() - size_), &(temp[0]), 0, NULL, NULL);
-<a name="l00228"></a>00228 <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00229"></a>00229 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231 }
-<a name="l00232"></a>00232
-<a name="l00241"></a><a class="code" href="classviennacl_1_1vector.html#ae8ca03c5bcafbb1520e7382e8ac0050d">00241</a> <span class="keyword">explicit</span> <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(cl_mem existing_mem, <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> vec_size) : size_(vec_size), elements_(existing_mem)
-<a name="l00242"></a>00242 {
-<a name="l00243"></a>00243 elements_.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#a40b09187c94d100512d5e49b1d2fd9bd" title="Manually increment the OpenCL reference count. Typically called automatically, but is necessary if us...">inc</a>(); <span class="comment">//prevents that the user-provided memory is deleted once the vector object is destroyed.</span>
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245
-<a name="l00246"></a>00246 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l00247"></a><a class="code" href="classviennacl_1_1vector.html#a90f2d2832c55e1631a0cf00bc61c9a3d">00247</a> <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression<LHS, RHS, OP></a> <span class="keyword">const</span> & other) : size_(other.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())
-<a name="l00248"></a>00248 {
-<a name="l00249"></a>00249 elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*other.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l00250"></a>00250 *<span class="keyword">this</span> = other;
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252
-<a name="l00257"></a><a class="code" href="classviennacl_1_1vector.html#abcd7469cb88bdf2e0f146b73ef567887">00257</a> <a class="code" href="classviennacl_1_1vector.html#ad81d0c53b73688726d9e7da6fafe0383" title="Default constructor in order to be compatible with various containers.">vector</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>) :
-<a name="l00258"></a>00258 size_(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())
-<a name="l00259"></a>00259 {
-<a name="l00260"></a>00260 viennacl::linalg::kernels::vector<SCALARTYPE, 1>::init();
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262 <span class="keywordflow">if</span> (<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() != 0)
-<a name="l00263"></a>00263 {
-<a name="l00264"></a>00264 elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00265"></a>00265 cl_int err;
-<a name="l00266"></a>00266 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), 0, NULL, NULL);
-<a name="l00267"></a>00267 <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00268"></a>00268 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00269"></a>00269 }
-<a name="l00270"></a>00270 }
-<a name="l00271"></a>00271
-<a name="l00274"></a><a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c">00274</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00275"></a>00275 {
-<a name="l00276"></a>00276 <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() != 0)
-<a name="l00278"></a>00278 {
-<a name="l00279"></a>00279 cl_int err;
-<a name="l00280"></a>00280 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), vec.<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, 0, 0, <span class="keyword">sizeof</span>(SCALARTYPE)*<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), 0, NULL, NULL);
-<a name="l00281"></a>00281 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285
-<a name="l00286"></a>00286
-<a name="l00291"></a>00291 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType> <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00292"></a><a class="code" href="classviennacl_1_1vector.html#ac4770655192f11ccca15bbd39219d725">00292</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00293"></a>00293 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00294"></a>00294 op_prod> & proxy)
-<a name="l00295"></a>00295 {
-<a name="l00296"></a>00296 <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(proxy.lhs().size());
-<a name="l00297"></a>00297 <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00298"></a>00298 <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::mult</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00299"></a>00299 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00300"></a>00300 }
-<a name="l00301"></a>00301
-<a name="l00306"></a>00306 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType> <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00307"></a><a class="code" href="classviennacl_1_1vector.html#ae91c07bfd48f22c8ea54d42583c3611f">00307</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00308"></a>00308 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00309"></a>00309 op_prod> & proxy)
-<a name="l00310"></a>00310 {
-<a name="l00311"></a>00311 <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(proxy.lhs().size());
-<a name="l00312"></a>00312 <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::mult</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00313"></a>00313 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315
-<a name="l00320"></a>00320 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType> <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00321"></a><a class="code" href="classviennacl_1_1vector.html#a2cb54ea322ec4f89df8b798350c84f1b">00321</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00322"></a>00322 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00323"></a>00323 op_div> & proxy)
-<a name="l00324"></a>00324 {
-<a name="l00325"></a>00325 <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(proxy.lhs().size());
-<a name="l00326"></a>00326 <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00327"></a>00327 <a class="code" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::divide</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00328"></a>00328 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00329"></a>00329 }
-<a name="l00330"></a>00330
-<a name="l00335"></a>00335 <span class="keyword">template</span> <<span class="keyword">typename</span> VectorType> <span class="comment">//use template to cover const/non-const of VectorType:</span>
-<a name="l00336"></a><a class="code" href="classviennacl_1_1vector.html#a4a926e47e610c69c69d0f37a858cc69b">00336</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< VectorType,
-<a name="l00337"></a>00337 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00338"></a>00338 op_div> & proxy)
-<a name="l00339"></a>00339 {
-<a name="l00340"></a>00340 <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(proxy.lhs().size());
-<a name="l00341"></a>00341 <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00342"></a>00342 <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">viennacl::linalg::mult</a>(proxy.lhs(), <span class="keyword">static_cast<</span>SCALARTYPE<span class="keyword">></span>(1.0) / proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00343"></a>00343 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00344"></a>00344 }
-<a name="l00345"></a>00345
-<a name="l00346"></a>00346 <span class="comment">//v1 = v2 + v3; </span>
-<a name="l00351"></a><a class="code" href="classviennacl_1_1vector.html#a77b68e4bfde82a92f70728c40b652f03">00351</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00352"></a>00352 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00353"></a>00353 op_add> & proxy)
-<a name="l00354"></a>00354 {
-<a name="l00355"></a>00355 <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(proxy.lhs().size());
-<a name="l00356"></a>00356 <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00357"></a>00357 <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00358"></a>00358 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00359"></a>00359 }
-<a name="l00360"></a>00360
-<a name="l00361"></a>00361 <span class="comment">//v1 = v2 - v3; </span>
-<a name="l00366"></a><a class="code" href="classviennacl_1_1vector.html#a5bcfcbcb1d03f00ee8942a39e881207f">00366</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator = </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00367"></a>00367 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00368"></a>00368 op_sub> & proxy)
-<a name="l00369"></a>00369 {
-<a name="l00370"></a>00370 <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(proxy.lhs().size());
-<a name="l00371"></a>00371 <span class="comment">//std::cout << "vector::operator=(vec_times_scalar_proxy)" << std::endl; </span>
-<a name="l00372"></a>00372 <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::sub</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>);
-<a name="l00373"></a>00373 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00374"></a>00374 }
-<a name="l00375"></a>00375
-<a name="l00377"></a>00377
-<a name="l00378"></a>00378 <span class="comment">//Note: The following operator overloads are defined in matrix_operations.hpp, compressed_matrix_operations.hpp and coordinate_matrix_operations.hpp</span>
-<a name="l00379"></a>00379 <span class="comment">//This is certainly not the nicest approach and will most likely by changed in the future, but it works :-)</span>
-<a name="l00380"></a>00380
-<a name="l00381"></a>00381 <span class="comment">//matrix<></span>
-<a name="l00386"></a>00386 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00387"></a>00387 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00388"></a>00388 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00389"></a>00389 op_prod> & proxy);
-<a name="l00390"></a>00390
-<a name="l00395"></a>00395 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00396"></a>00396 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00397"></a>00397 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00398"></a>00398 op_prod> & proxy);
-<a name="l00399"></a>00399
-<a name="l00404"></a>00404 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00405"></a>00405 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00406"></a>00406 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00407"></a>00407 op_prod> & proxy);
-<a name="l00408"></a>00408
-<a name="l00413"></a>00413 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00414"></a>00414 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00415"></a>00415 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00416"></a>00416 op_prod> & proxy);
-<a name="l00417"></a>00417
-<a name="l00422"></a>00422 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00423"></a>00423 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00424"></a>00424 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00425"></a>00425 op_prod> & proxy);
-<a name="l00426"></a>00426
-<a name="l00427"></a>00427 <span class="comment">//transposed_matrix_proxy:</span>
-<a name="l00432"></a>00432 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00433"></a>00433 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00434"></a>00434 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00435"></a>00435 op_trans >,
-<a name="l00436"></a>00436 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00437"></a>00437 op_prod> & proxy);
-<a name="l00438"></a>00438
-<a name="l00443"></a>00443 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00444"></a>00444 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00445"></a>00445 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00446"></a>00446 op_trans >,
-<a name="l00447"></a>00447 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00448"></a>00448 op_prod> & proxy);
-<a name="l00449"></a>00449
-<a name="l00454"></a>00454 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00455"></a>00455 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00456"></a>00456 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00457"></a>00457 op_trans >,
-<a name="l00458"></a>00458 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00459"></a>00459 op_prod> & proxy);
-<a name="l00460"></a>00460
-<a name="l00465"></a>00465 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00466"></a>00466 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00467"></a>00467 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00468"></a>00468 op_trans >,
-<a name="l00469"></a>00469 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00470"></a>00470 op_prod> & proxy);
-<a name="l00471"></a>00471
-<a name="l00476"></a>00476 <span class="keyword">template</span> <<span class="keyword">typename</span> F, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00477"></a>00477 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix__expression.html">matrix_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00478"></a>00478 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1matrix.html" title="A dense matrix class.">matrix<SCALARTYPE, F, MAT_ALIGNMENT></a>,
-<a name="l00479"></a>00479 op_trans >,
-<a name="l00480"></a>00480 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00481"></a>00481 op_prod> & proxy);
-<a name="l00482"></a>00482
-<a name="l00483"></a>00483
-<a name="l00484"></a>00484
-<a name="l00486"></a>00486
-<a name="l00490"></a>00490 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00491"></a>00491 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00492"></a>00492 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00493"></a>00493 op_prod> & proxy);
-<a name="l00494"></a>00494
-<a name="l00499"></a>00499 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00500"></a>00500 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00501"></a>00501 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00502"></a>00502 op_prod> & proxy);
-<a name="l00503"></a>00503
-<a name="l00508"></a>00508 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00509"></a>00509 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00510"></a>00510 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00511"></a>00511 op_prod> & proxy);
-<a name="l00512"></a>00512
-<a name="l00517"></a>00517 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00518"></a>00518 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00519"></a>00519 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00520"></a>00520 op_prod> & proxy);
-<a name="l00521"></a>00521
-<a name="l00526"></a>00526 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00527"></a>00527 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1compressed__matrix.html" title="A sparse square matrix in compressed sparse rows format.">compressed_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00528"></a>00528 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00529"></a>00529 op_prod> & proxy);
-<a name="l00530"></a>00530
-<a name="l00531"></a>00531
-<a name="l00532"></a>00532 <span class="comment">//coordinate_matrix<></span>
-<a name="l00537"></a>00537 <span class="comment"></span> <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00538"></a>00538 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a1442541c47d33407abda6838a344c49c" title="Assignment operator. This vector is resized if 'vec' is of a different size.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00539"></a>00539 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00540"></a>00540 op_prod> & proxy);
-<a name="l00541"></a>00541
-<a name="l00546"></a>00546 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00547"></a>00547 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00548"></a>00548 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00549"></a>00549 op_prod> & proxy);
-<a name="l00550"></a>00550
-<a name="l00555"></a>00555 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00556"></a>00556 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-=</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00557"></a>00557 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00558"></a>00558 op_prod> & proxy);
-<a name="l00559"></a>00559
-<a name="l00564"></a>00564 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00565"></a>00565 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator+</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00566"></a>00566 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00567"></a>00567 op_prod> & proxy);
-<a name="l00568"></a>00568
-<a name="l00573"></a>00573 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> MAT_ALIGNMENT>
-<a name="l00574"></a>00574 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator-</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1coordinate__matrix.html" title="A sparse square matrix, where entries are stored as triplets (i,j, val), where i and j are the row an...">coordinate_matrix<SCALARTYPE, MAT_ALIGNMENT></a>,
-<a name="l00575"></a>00575 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00576"></a>00576 op_prod> & proxy);
-<a name="l00577"></a>00577
-<a name="l00579"></a>00579
-<a name="l00580"></a>00580 <span class="comment">//enlarge or reduce allocated memory and set unused memory to zero</span>
-<a name="l00586"></a><a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c">00586</a> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> new_size, <span class="keywordtype">bool</span> preserve = <span class="keyword">true</span>)
-<a name="l00587"></a>00587 {
-<a name="l00588"></a>00588 assert(new_size > 0);
-<a name="l00589"></a>00589
-<a name="l00590"></a>00590 <span class="keywordflow">if</span> (new_size != size_)
-<a name="l00591"></a>00591 {
-<a name="l00592"></a>00592 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> new_internal_size = viennacl::tools::roundUpToNextMultiple<unsigned int>(new_size, ALIGNMENT);
-<a name="l00593"></a>00593
-<a name="l00594"></a>00594 std::vector<SCALARTYPE> temp(size_);
-<a name="l00595"></a>00595 <span class="keywordflow">if</span> (preserve && size_ > 0)
-<a name="l00596"></a>00596 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(*<span class="keyword">this</span>, temp);
-<a name="l00597"></a>00597 temp.resize(new_size); <span class="comment">//drop all entries above new_size</span>
-<a name="l00598"></a>00598 temp.resize(new_internal_size); <span class="comment">//enlarge to fit new internal size</span>
-<a name="l00599"></a>00599
-<a name="l00600"></a>00600 <span class="keywordflow">if</span> (new_internal_size != <a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())
-<a name="l00601"></a>00601 {
-<a name="l00602"></a>00602 elements_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(SCALARTYPE)*new_internal_size);
-<a name="l00603"></a>00603 }
-<a name="l00604"></a>00604
-<a name="l00605"></a>00605 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(temp, *<span class="keyword">this</span>);
-<a name="l00606"></a>00606 size_ = new_size;
-<a name="l00607"></a>00607 }
-<a name="l00608"></a>00608
-<a name="l00609"></a>00609 }
-<a name="l00610"></a>00610
-<a name="l00611"></a>00611
-<a name="l00612"></a>00612 <span class="comment">//read-write access to an element of the vector</span>
-<a name="l00615"></a><a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03">00615</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03" title="Read-write access to a single element of the vector.">operator()</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)
-<a name="l00616"></a>00616 {
-<a name="l00617"></a>00617 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(index, elements_);
-<a name="l00618"></a>00618 }
-<a name="l00619"></a>00619
-<a name="l00622"></a><a class="code" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc">00622</a> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc" title="Read-write access to a single element of the vector.">operator[]</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)
-<a name="l00623"></a>00623 {
-<a name="l00624"></a>00624 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1entry__proxy.html" title="A proxy class for a single element of a vector or matrix. This proxy should not be noticed by end-use...">entry_proxy<SCALARTYPE></a>(index, elements_);
-<a name="l00625"></a>00625 }
-<a name="l00626"></a>00626
-<a name="l00627"></a>00627
-<a name="l00630"></a><a class="code" href="classviennacl_1_1vector.html#a2de1bb775af4a87ce0b792154700c414">00630</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03" title="Read-write access to a single element of the vector.">operator()</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)<span class="keyword"> const</span>
-<a name="l00631"></a>00631 <span class="keyword"> </span>{
-<a name="l00632"></a>00632 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> tmp;
-<a name="l00633"></a>00633 cl_int err;
-<a name="l00634"></a>00634 err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>(), elements_, tmp.<a class="code" href="classviennacl_1_1scalar.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL handle.">handle</a>(), <span class="keyword">sizeof</span>(SCALARTYPE)*index, 0, <span class="keyword">sizeof</span>(SCALARTYPE), 0, NULL, NULL);
-<a name="l00635"></a>00635 <span class="comment">//assert(err == CL_SUCCESS);</span>
-<a name="l00636"></a>00636 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00637"></a>00637 <span class="keywordflow">return</span> tmp;
-<a name="l00638"></a>00638 }
-<a name="l00639"></a>00639
-<a name="l00642"></a><a class="code" href="classviennacl_1_1vector.html#acd1666d8bd98191443b3b62f0944a822">00642</a> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <a class="code" href="classviennacl_1_1vector.html#af8f3f9c5c359c354201a0e4386b4cfcc" title="Read-write access to a single element of the vector.">operator[]</a>(<a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> index)<span class="keyword"> const</span>
-<a name="l00643"></a>00643 <span class="keyword"> </span>{
-<a name="l00644"></a>00644 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#ad39a7d06af546a8df947a8a36722eb03" title="Read-write access to a single element of the vector.">operator()</a>(index);
-<a name="l00645"></a>00645 }
-<a name="l00646"></a>00646
-<a name="l00649"></a><a class="code" href="classviennacl_1_1vector.html#a87bf465ad5a49ddd749505935d931db3">00649</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00650"></a>00650 {
-<a name="l00651"></a>00651 <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">viennacl::linalg::inplace_add</a>(*<span class="keyword">this</span>, vec);
-<a name="l00652"></a>00652 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00653"></a>00653 }
-<a name="l00654"></a>00654
-<a name="l00657"></a><a class="code" href="classviennacl_1_1vector.html#abe21f33c50e397aeefd7d075ce85d259">00657</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00658"></a>00658 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00659"></a>00659 op_prod> & proxy)
-<a name="l00660"></a>00660 {
-<a name="l00661"></a>00661 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00662"></a>00662 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00663"></a>00663 }
-<a name="l00664"></a>00664
-<a name="l00667"></a><a class="code" href="classviennacl_1_1vector.html#a7aeced050a63cc0314a993d12330d2ab">00667</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00668"></a>00668 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00669"></a>00669 op_prod> & proxy)
-<a name="l00670"></a>00670 {
-<a name="l00671"></a>00671 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00672"></a>00672 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00673"></a>00673 }
-<a name="l00674"></a>00674
-<a name="l00677"></a><a class="code" href="classviennacl_1_1vector.html#aeddc9d15b96937b89a6122abfbb4a4b0">00677</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00678"></a>00678 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00679"></a>00679 op_prod> & proxy)
-<a name="l00680"></a>00680 {
-<a name="l00681"></a>00681 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00682"></a>00682 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00683"></a>00683 }
-<a name="l00684"></a>00684
-<a name="l00687"></a><a class="code" href="classviennacl_1_1vector.html#a2f8d78b1c904f274f2c50ec90f9a944e">00687</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00688"></a>00688 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00689"></a>00689 op_prod> & proxy)
-<a name="l00690"></a>00690 {
-<a name="l00691"></a>00691 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00692"></a>00692 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00693"></a>00693 }
-<a name="l00694"></a>00694
-<a name="l00697"></a><a class="code" href="classviennacl_1_1vector.html#a478742d85955289d0fef99d591d92771">00697</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a8a3356317aca3d60689911cc206b35d3" title="Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a dense matrix.">operator += </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00698"></a>00698 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00699"></a>00699 op_div> & proxy)
-<a name="l00700"></a>00700 {
-<a name="l00701"></a>00701 <a class="code" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83" title="Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_div_add</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00702"></a>00702 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00703"></a>00703 }
-<a name="l00704"></a>00704
-<a name="l00705"></a>00705
-<a name="l00706"></a>00706
-<a name="l00709"></a><a class="code" href="classviennacl_1_1vector.html#aae3c76bbb1a3e6023b1af706ce981b49">00709</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l00710"></a>00710 {
-<a name="l00711"></a>00711 <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">viennacl::linalg::inplace_sub</a>(*<span class="keyword">this</span>, vec);
-<a name="l00712"></a>00712 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00713"></a>00713 }
-<a name="l00714"></a>00714
-<a name="l00717"></a><a class="code" href="classviennacl_1_1vector.html#aea40ee2f758aa6fc99ce786efc8ef02c">00717</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00718"></a>00718 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00719"></a>00719 op_prod> & proxy)
-<a name="l00720"></a>00720 {
-<a name="l00721"></a>00721 <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00722"></a>00722 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00723"></a>00723 }
-<a name="l00724"></a>00724
-<a name="l00727"></a><a class="code" href="classviennacl_1_1vector.html#afb6860261a249d443031fcaa6940806a">00727</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00728"></a>00728 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00729"></a>00729 op_prod> & proxy)
-<a name="l00730"></a>00730 {
-<a name="l00731"></a>00731 <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00732"></a>00732 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00733"></a>00733 }
-<a name="l00734"></a>00734
-<a name="l00737"></a><a class="code" href="classviennacl_1_1vector.html#a067bc8f3532c3d398671ede297159c18">00737</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00738"></a>00738 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00739"></a>00739 op_prod> & proxy)
-<a name="l00740"></a>00740 {
-<a name="l00741"></a>00741 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), -proxy.rhs());
-<a name="l00742"></a>00742 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00743"></a>00743 }
-<a name="l00744"></a>00744
-<a name="l00747"></a><a class="code" href="classviennacl_1_1vector.html#a32ebaa055c897b1a6f3ea49e3b7022dd">00747</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00748"></a>00748 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00749"></a>00749 op_prod> & proxy)
-<a name="l00750"></a>00750 {
-<a name="l00751"></a>00751 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(*<span class="keyword">this</span>, proxy.lhs(), -proxy.rhs());
-<a name="l00752"></a>00752 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00753"></a>00753 }
-<a name="l00754"></a>00754
-<a name="l00757"></a><a class="code" href="classviennacl_1_1vector.html#a983376d820f950a2bc06d987a604c9b3">00757</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#afdab89a0944ccdbe2ada1691060d7a68" title="Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a dense matrix.">operator -= </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00758"></a>00758 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00759"></a>00759 op_div> & proxy)
-<a name="l00760"></a>00760 {
-<a name="l00761"></a>00761 <a class="code" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21" title="Inplace divide-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_div_sub</a>(*<span class="keyword">this</span>, proxy.lhs(), proxy.rhs());
-<a name="l00762"></a>00762 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00763"></a>00763 }
-<a name="l00764"></a>00764
-<a name="l00765"></a>00765
-<a name="l00766"></a>00766
-<a name="l00767"></a>00767
-<a name="l00770"></a><a class="code" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b">00770</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b" title="Scales this vector by a CPU scalar value.">operator *= </a>(SCALARTYPE val)
-<a name="l00771"></a>00771 {
-<a name="l00772"></a>00772 <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, val);
-<a name="l00773"></a>00773 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00774"></a>00774 }
-<a name="l00775"></a>00775
-<a name="l00778"></a><a class="code" href="classviennacl_1_1vector.html#a32d20bcbd10c909d2041c30cc942f080">00778</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#adad7d33d0bb340be923ded4b7050867b" title="Scales this vector by a CPU scalar value.">operator *= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & gpu_val)
-<a name="l00779"></a>00779 {
-<a name="l00780"></a>00780 <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, gpu_val);
-<a name="l00781"></a>00781 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00782"></a>00782 }
-<a name="l00783"></a>00783
-<a name="l00786"></a><a class="code" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976">00786</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976" title="Scales this vector by a CPU scalar value.">operator /= </a>(SCALARTYPE val)
-<a name="l00787"></a>00787 {
-<a name="l00788"></a>00788 <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_mult</a>(*<span class="keyword">this</span>, static_cast<SCALARTYPE>(1) / val);
-<a name="l00789"></a>00789 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00790"></a>00790 }
-<a name="l00791"></a>00791
-<a name="l00794"></a><a class="code" href="classviennacl_1_1vector.html#a3ffe49fc9f161ce2ea1fb130cd0195ca">00794</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#af6ba5ebda72ab395ad1a1e5504088976" title="Scales this vector by a CPU scalar value.">operator /= </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & gpu_val)
-<a name="l00795"></a>00795 {
-<a name="l00796"></a>00796 <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">viennacl::linalg::inplace_divide</a>(*<span class="keyword">this</span>, gpu_val);
-<a name="l00797"></a>00797 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00798"></a>00798 }
-<a name="l00799"></a>00799
-<a name="l00800"></a>00800
-<a name="l00801"></a>00801
-<a name="l00802"></a>00802 <span class="comment">// free addition</span>
-<a name="l00803"></a>00803
-<a name="l00806"></a><a class="code" href="classviennacl_1_1vector.html#a87db4b1001dea6bfc9b47d1e07028552">00806</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00807"></a>00807 <span class="keyword"> </span>{
-<a name="l00808"></a>00808 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00809"></a>00809 <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::add</a>(*<span class="keyword">this</span>, vec, result);
-<a name="l00810"></a>00810 <span class="keywordflow">return</span> result;
-<a name="l00811"></a>00811 }
-<a name="l00812"></a>00812
-<a name="l00815"></a><a class="code" href="classviennacl_1_1vector.html#abf44eeb0d6aebf7fac80026eb2aaff11">00815</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00816"></a>00816 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00817"></a>00817 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00818"></a>00818 <span class="keyword"> </span>{
-<a name="l00819"></a>00819 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00820"></a>00820 <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00821"></a>00821 <span class="keywordflow">return</span> result;
-<a name="l00822"></a>00822 }
-<a name="l00823"></a>00823
-<a name="l00826"></a><a class="code" href="classviennacl_1_1vector.html#ae642a9b7a6e50936342bced1c2cc2aa9">00826</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00827"></a>00827 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00828"></a>00828 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00829"></a>00829 <span class="keyword"> </span>{
-<a name="l00830"></a>00830 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00831"></a>00831 <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00832"></a>00832 <span class="keywordflow">return</span> result;
-<a name="l00833"></a>00833 }
-<a name="l00834"></a>00834
-<a name="l00837"></a><a class="code" href="classviennacl_1_1vector.html#a8c0fb94a7256a1afe4c16c4d54db7316">00837</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00838"></a>00838 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00839"></a>00839 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00840"></a>00840 <span class="keyword"> </span>{
-<a name="l00841"></a>00841 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00842"></a>00842 <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00843"></a>00843 <span class="keywordflow">return</span> result;
-<a name="l00844"></a>00844 }
-<a name="l00845"></a>00845
-<a name="l00848"></a><a class="code" href="classviennacl_1_1vector.html#a735ecd24c5432dbf339e9bf6a4bfefb6">00848</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#adb89283433101dc99dc1050471499973" title="Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a dense matrix.">operator + </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00849"></a>00849 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00850"></a>00850 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00851"></a>00851 <span class="keyword"> </span>{
-<a name="l00852"></a>00852 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00853"></a>00853 <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">viennacl::linalg::mul_add</a>(proxy.lhs(), proxy.rhs(), *<span class="keyword">this</span>, result);
-<a name="l00854"></a>00854 <span class="keywordflow">return</span> result;
-<a name="l00855"></a>00855 }
-<a name="l00856"></a>00856
-<a name="l00857"></a>00857
-<a name="l00858"></a>00858 <span class="comment">//free subtraction:</span>
-<a name="l00861"></a><a class="code" href="classviennacl_1_1vector.html#ab4b953de766b713cf2016e69b75233de">00861</a> <span class="comment"></span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)<span class="keyword"> const</span>
-<a name="l00862"></a>00862 <span class="keyword"> </span>{
-<a name="l00863"></a>00863 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00864"></a>00864 <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">viennacl::linalg::sub</a>(*<span class="keyword">this</span>, vec, result);
-<a name="l00865"></a>00865 <span class="keywordflow">return</span> result;
-<a name="l00866"></a>00866 }
-<a name="l00867"></a>00867
-<a name="l00870"></a><a class="code" href="classviennacl_1_1vector.html#a1f057bb893f457b22ddd46aecc973469">00870</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00871"></a>00871 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00872"></a>00872 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00873"></a>00873 <span class="keyword"> </span>{
-<a name="l00874"></a>00874 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00875"></a>00875 result = *<span class="keyword">this</span>;
-<a name="l00876"></a>00876 <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(result, proxy.lhs(), proxy.rhs());
-<a name="l00877"></a>00877 <span class="keywordflow">return</span> result;
-<a name="l00878"></a>00878 }
-<a name="l00879"></a>00879
-<a name="l00882"></a><a class="code" href="classviennacl_1_1vector.html#ab6a6205580e81d2e2e477f55b75f8645">00882</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00883"></a>00883 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>,
-<a name="l00884"></a>00884 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00885"></a>00885 <span class="keyword"> </span>{
-<a name="l00886"></a>00886 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00887"></a>00887 result = *<span class="keyword">this</span>;
-<a name="l00888"></a>00888 <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">viennacl::linalg::inplace_mul_sub</a>(result, proxy.lhs(), proxy.rhs());
-<a name="l00889"></a>00889 <span class="keywordflow">return</span> result;
-<a name="l00890"></a>00890 }
-<a name="l00891"></a>00891
-<a name="l00894"></a><a class="code" href="classviennacl_1_1vector.html#a7b6c480cbd1da3812d587a729983fc4f">00894</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00895"></a>00895 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00896"></a>00896 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00897"></a>00897 <span class="keyword"> </span>{
-<a name="l00898"></a>00898 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00899"></a>00899 result = *<span class="keyword">this</span>;
-<a name="l00900"></a>00900 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(result, proxy.lhs(), -proxy.rhs());
-<a name="l00901"></a>00901 <span class="keywordflow">return</span> result;
-<a name="l00902"></a>00902 }
-<a name="l00903"></a>00903
-<a name="l00906"></a><a class="code" href="classviennacl_1_1vector.html#a92159381dc559d8caac28099589b85cf">00906</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <a class="code" href="classviennacl_1_1vector.html#a5363d6592a73924f46f913b12f039ba1" title="Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a dense matrix.">operator - </a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression</a>< <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a>,
-<a name="l00907"></a>00907 <span class="keyword">const</span> SCALARTYPE,
-<a name="l00908"></a>00908 op_prod> & proxy)<span class="keyword"> const</span>
-<a name="l00909"></a>00909 <span class="keyword"> </span>{
-<a name="l00910"></a>00910 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> result(size_);
-<a name="l00911"></a>00911 result = *<span class="keyword">this</span>;
-<a name="l00912"></a>00912 <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">viennacl::linalg::inplace_mul_add</a>(result, proxy.lhs(), -proxy.rhs());
-<a name="l00913"></a>00913 <span class="keywordflow">return</span> result;
-<a name="l00914"></a>00914 }
-<a name="l00915"></a>00915
-<a name="l00916"></a>00916
-<a name="l00917"></a>00917 <span class="comment">//free multiplication</span>
-<a name="l00920"></a>00920 <span class="comment"></span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_prod>
-<a name="l00921"></a><a class="code" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d">00921</a> <a class="code" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d" title="Scales the vector by a CPU scalar 'alpha' and returns an expression template.">operator * </a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00922"></a>00922 <span class="keyword"> </span>{
-<a name="l00923"></a>00923 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_prod>(*<span class="keyword">this</span>, value);
-<a name="l00924"></a>00924 }
-<a name="l00925"></a>00925
-<a name="l00928"></a>00928 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod>
-<a name="l00929"></a><a class="code" href="classviennacl_1_1vector.html#a3ff0ebfa2e17bab4dbad38c0cd50d948">00929</a> <a class="code" href="classviennacl_1_1vector.html#a0273e98b77b6a89e60116358fe27cc9d" title="Scales the vector by a CPU scalar 'alpha' and returns an expression template.">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00930"></a>00930 <span class="keyword"> </span>{
-<a name="l00931"></a>00931 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod>(*<span class="keyword">this</span>, value);
-<a name="l00932"></a>00932 }
-<a name="l00933"></a>00933
-<a name="l00934"></a>00934 <span class="comment">//free division</span>
-<a name="l00937"></a>00937 <span class="comment"></span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_div>
-<a name="l00938"></a><a class="code" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af">00938</a> <a class="code" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af" title="Scales the vector by a CPU scalar 'alpha' and returns an expression template.">operator / </a>(SCALARTYPE <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00939"></a>00939 <span class="keyword"> </span>{
-<a name="l00940"></a>00940 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> SCALARTYPE, op_div>(*<span class="keyword">this</span>, value);
-<a name="l00941"></a>00941 }
-<a name="l00942"></a>00942
-<a name="l00945"></a>00945 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_div>
-<a name="l00946"></a><a class="code" href="classviennacl_1_1vector.html#ad309219e4080cb6a6427f3321d159b2c">00946</a> <a class="code" href="classviennacl_1_1vector.html#ad87b95d3c182effc15136d7c610200af" title="Scales the vector by a CPU scalar 'alpha' and returns an expression template.">operator / </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>)<span class="keyword"> const</span>
-<a name="l00947"></a>00947 <span class="keyword"> </span>{
-<a name="l00948"></a>00948 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, ALIGNMENT></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_div>(*<span class="keyword">this</span>, value);
-<a name="l00949"></a>00949 }
-<a name="l00950"></a>00950
-<a name="l00951"></a>00951
-<a name="l00953"></a>00953
-<a name="l00954"></a><a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8">00954</a> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">iterator</a> <a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>()
-<a name="l00955"></a>00955 {
-<a name="l00956"></a>00956 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">iterator</a>(*<span class="keyword">this</span>, 0);
-<a name="l00957"></a>00957 }
-<a name="l00958"></a>00958
-<a name="l00960"></a><a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f">00960</a> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">iterator</a> <a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>()
-<a name="l00961"></a>00961 {
-<a name="l00962"></a>00962 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a589223a5e682b4a61d57bb8742b1cec9">iterator</a>(*<span class="keyword">this</span>, <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00963"></a>00963 }
-<a name="l00964"></a>00964
-<a name="l00966"></a><a class="code" href="classviennacl_1_1vector.html#aa4b02d4f1a8500fb07a551069060709f">00966</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_iterator</a> <a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>()<span class="keyword"> const</span>
-<a name="l00967"></a>00967 <span class="keyword"> </span>{
-<a name="l00968"></a>00968 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">const_iterator</a>(*<span class="keyword">this</span>, 0);
-<a name="l00969"></a>00969 }
-<a name="l00970"></a>00970
-<a name="l00972"></a><a class="code" href="classviennacl_1_1vector.html#a350132543d80a1c1e5be844e6d2878ea">00972</a> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_iterator</a> <a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>()<span class="keyword"> const</span>
-<a name="l00973"></a>00973 <span class="keyword"> </span>{
-<a name="l00974"></a>00974 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector.html#a5b0cecdbbf962357b5dc5f79dcae2d66">const_iterator</a>(*<span class="keyword">this</span>, <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00975"></a>00975 }
-<a name="l00976"></a>00976
-<a name="l00979"></a><a class="code" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09">00979</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09" title="Swaps the entries of the two vectors.">swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & other)
-<a name="l00980"></a>00980 {
-<a name="l00981"></a>00981 <a class="code" href="classviennacl_1_1vector.html#af5a080ddc0576cfba4c7494ff8eccb09" title="Swaps the entries of the two vectors.">swap</a>(*<span class="keyword">this</span>, other);
-<a name="l00982"></a>00982 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00983"></a>00983 };
-<a name="l00984"></a>00984
-<a name="l00987"></a><a class="code" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222">00987</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222" title="Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy.">fast_swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & other)
-<a name="l00988"></a>00988 {
-<a name="l00989"></a>00989 assert(this->size_ == other.size_);
-<a name="l00990"></a>00990 this->elements_.<a class="code" href="classviennacl_1_1ocl_1_1handle.html#aca2a2fe50e9519f31c07e34d56a2a5eb" title="Swaps the OpenCL handle of two handle objects.">swap</a>(other.elements_);
-<a name="l00991"></a>00991 <span class="keywordflow">return</span> *<span class="keyword">this</span>;
-<a name="l00992"></a>00992 };
-<a name="l00993"></a>00993
-<a name="l00996"></a><a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7">00996</a> <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> <a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> size_; }
-<a name="l00997"></a>00997
-<a name="l01000"></a><a class="code" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131">01000</a> <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> <a class="code" href="classviennacl_1_1vector.html#a0ab5ce862c0331d9e45a6e1774fca131" title="Returns the maximum possible size of the vector, which is given by 128 MByte due to limitations by Op...">max_size</a>()<span class="keyword"> const</span>
-<a name="l01001"></a>01001 <span class="keyword"> </span>{
-<a name="l01002"></a>01002 <span class="keywordflow">return</span> (128*1024*1024) / <span class="keyword">sizeof</span>(SCALARTYPE); <span class="comment">//128 MB is maximum size of memory chunks in OpenCL!</span>
-<a name="l01003"></a>01003 }
-<a name="l01006"></a><a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c">01006</a> <a class="code" href="classviennacl_1_1vector.html#a8e2cc70e5cd203262fe8270613f303ec">size_type</a> <a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> viennacl::tools::roundUpToNextMultiple<size_type>(size_, ALIGNMENT); }
-<a name="l01007"></a>01007
-<a name="l01009"></a><a class="code" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da">01009</a> <span class="keywordtype">bool</span> <a class="code" href="classviennacl_1_1vector.html#a3f37b042a1e7cd4bd38fc564de81f0da" title="Returns true is the size is zero.">empty</a>() { <span class="keywordflow">return</span> size_ == 0; }
-<a name="l01010"></a>01010
-<a name="l01012"></a><a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c">01012</a> <span class="keyword">const</span> <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> & <a class="code" href="classviennacl_1_1vector.html#abe419a13116160fd12b66f47c5180e5c" title="Returns the OpenCL memory viennacl::ocl::handle. Typically used for launching compute viennacl::ocl::...">handle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> elements_; }
-<a name="l01013"></a>01013
-<a name="l01016"></a><a class="code" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204">01016</a> <span class="keywordtype">void</span> <a class="code" href="classviennacl_1_1vector.html#ac8bb3912a3ce86b15842e79d0b421204" title="Resets all entries to zero. Does not change the size of the vector.">clear</a>()
-<a name="l01017"></a>01017 {
-<a name="l01018"></a>01018 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"clear"</span>);
-<a name="l01019"></a>01019
-<a name="l01020"></a>01020 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(elements_, static_cast<cl_uint>(<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l01021"></a>01021 }
-<a name="l01022"></a>01022 <span class="comment">//void swap(vector & other){}</span>
-<a name="l01023"></a>01023
-<a name="l01024"></a>01024
-<a name="l01025"></a>01025 <span class="comment">//TODO: Think about implementing the following public member functions</span>
-<a name="l01026"></a>01026 <span class="comment">//void insert_element(unsigned int i, SCALARTYPE val){}</span>
-<a name="l01027"></a>01027 <span class="comment">//void erase_element(unsigned int i){}</span>
-<a name="l01028"></a>01028
-<a name="l01029"></a>01029 <span class="keyword">private</span>:
-<a name="l01030"></a>01030 cl_uint size_;
-<a name="l01031"></a>01031 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> elements_;
-<a name="l01032"></a>01032 }; <span class="comment">//vector</span>
-<a name="l01033"></a>01033
-<a name="l01034"></a>01034
-<a name="l01035"></a>01035 <span class="comment">//</span>
-<a name="l01037"></a>01037 <span class="comment"></span> <span class="comment">//</span>
-<a name="l01038"></a>01038
-<a name="l01045"></a>01045 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01046"></a><a class="code" href="namespaceviennacl.html#a7953e64a62d2209621a3f4a505dc9f9e">01046</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_begin,
-<a name="l01047"></a>01047 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_end,
-<a name="l01048"></a>01048 CPU_ITERATOR cpu_begin )
-<a name="l01049"></a>01049 {
-<a name="l01050"></a>01050 assert(gpu_end - gpu_begin >= 0);
-<a name="l01051"></a>01051 <span class="keywordflow">if</span> (gpu_end - gpu_begin != 0)
-<a name="l01052"></a>01052 {
-<a name="l01053"></a>01053 std::vector<SCALARTYPE> temp_buffer(gpu_end - gpu_begin);
-<a name="l01054"></a>01054 cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01055"></a>01055 gpu_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>(), CL_TRUE, 0,
-<a name="l01056"></a>01056 <span class="keyword">sizeof</span>(SCALARTYPE)*(gpu_end - gpu_begin),
-<a name="l01057"></a>01057 &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l01058"></a>01058 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01059"></a>01059 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l01060"></a>01060
-<a name="l01061"></a>01061 <span class="comment">//now copy entries to cpu_vec:</span>
-<a name="l01062"></a>01062 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">std::copy</a>(temp_buffer.begin(), temp_buffer.end(), cpu_begin);
-<a name="l01063"></a>01063 }
-<a name="l01064"></a>01064 }
-<a name="l01065"></a>01065
-<a name="l01072"></a>01072 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01073"></a><a class="code" href="namespaceviennacl.html#a6713b60b19010992ea611ef7ecd4fdf2">01073</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_begin,
-<a name="l01074"></a>01074 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_end,
-<a name="l01075"></a>01075 CPU_ITERATOR cpu_begin )
-<a name="l01076"></a>01076
-<a name="l01077"></a>01077 {
-<a name="l01078"></a>01078 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a>(gpu_begin),
-<a name="l01079"></a>01079 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a>(gpu_end),
-<a name="l01080"></a>01080 cpu_begin);
-<a name="l01081"></a>01081 }
-<a name="l01082"></a>01082
-<a name="l01088"></a>01088 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01089"></a><a class="code" href="namespaceviennacl.html#afb5884675d2f3a9ca1a57a3a722aa78a">01089</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <span class="keyword">const</span> & gpu_vec,
-<a name="l01090"></a>01090 CPUVECTOR & cpu_vec )
-<a name="l01091"></a>01091 {
-<a name="l01092"></a>01092 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>(), cpu_vec.begin());
-<a name="l01093"></a>01093 }
-<a name="l01094"></a>01094
-<a name="l01095"></a>01095 <span class="comment">//from gpu to cpu. Type assumption: cpu_vec lies in a linear memory chunk</span>
-<a name="l01107"></a>01107 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01108"></a><a class="code" href="namespaceviennacl.html#a9c694a91cf3e54637ed6a05ab7d9ce75">01108</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_begin,
-<a name="l01109"></a>01109 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> & gpu_end,
-<a name="l01110"></a>01110 CPU_ITERATOR cpu_begin )
-<a name="l01111"></a>01111 {
-<a name="l01112"></a>01112 <span class="keywordflow">if</span> (gpu_begin != gpu_end)
-<a name="l01113"></a>01113 {
-<a name="l01114"></a>01114 cl_int err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01115"></a>01115 gpu_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>(), CL_TRUE, 0,
-<a name="l01116"></a>01116 <span class="keyword">sizeof</span>(SCALARTYPE)*(gpu_end - gpu_begin),
-<a name="l01117"></a>01117 &(*cpu_begin), 0, NULL, NULL);
-<a name="l01118"></a>01118 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01119"></a>01119 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l01120"></a>01120 }
-<a name="l01121"></a>01121 }
-<a name="l01122"></a>01122
-<a name="l01128"></a>01128 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01129"></a><a class="code" href="namespaceviennacl.html#aad3621936e6071d2777aae22a5f891ec">01129</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> <span class="keyword">const</span> & gpu_vec,
-<a name="l01130"></a>01130 CPUVECTOR & cpu_vec )
-<a name="l01131"></a>01131 {
-<a name="l01132"></a>01132 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>(), cpu_vec.begin());
-<a name="l01133"></a>01133 }
-<a name="l01134"></a>01134
-<a name="l01135"></a>01135
-<a name="l01136"></a>01136
-<a name="l01137"></a>01137 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l01138"></a>01138 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01139"></a>01139 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(vector<float, ALIGNMENT> <span class="keyword">const</span> & gpu_vec,
-<a name="l01140"></a>01140 Eigen::VectorXf & eigen_vec)
-<a name="l01141"></a>01141 {
-<a name="l01142"></a>01142 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(gpu_vec.begin(), gpu_vec.end(), &(eigen_vec[0]));
-<a name="l01143"></a>01143 }
-<a name="l01144"></a>01144
-<a name="l01145"></a>01145 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01146"></a>01146 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(vector<double, ALIGNMENT> & gpu_vec,
-<a name="l01147"></a>01147 Eigen::VectorXd & eigen_vec)
-<a name="l01148"></a>01148 {
-<a name="l01149"></a>01149 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(gpu_vec.begin(), gpu_vec.end(), &(eigen_vec[0]));
-<a name="l01150"></a>01150 }
-<a name="l01151"></a>01151 <span class="preprocessor"> #endif</span>
-<a name="l01152"></a>01152 <span class="preprocessor"></span>
-<a name="l01153"></a>01153
-<a name="l01154"></a>01154 <span class="comment">//</span>
-<a name="l01156"></a>01156 <span class="comment"></span> <span class="comment">//</span>
-<a name="l01157"></a>01157
-<a name="l01158"></a>01158 <span class="comment">//from cpu to gpu. Safe assumption: cpu_vector does not necessarily occupy a linear memory segment, but is not larger than the allocated memory on the GPU</span>
-<a name="l01165"></a>01165 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01166"></a><a class="code" href="namespaceviennacl.html#afb1db189fa5cd8ee4a8222d8b87f3ab0">01166</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l01167"></a>01167 CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l01168"></a>01168 <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin)
-<a name="l01169"></a>01169 {
-<a name="l01170"></a>01170 <span class="keywordflow">if</span> (cpu_begin != cpu_end)
-<a name="l01171"></a>01171 {
-<a name="l01172"></a>01172 <span class="comment">//we require that the size of the gpu_vector is larger or equal to the cpu-size</span>
-<a name="l01173"></a>01173 std::vector<SCALARTYPE> temp_buffer(cpu_end - cpu_begin);
-<a name="l01174"></a>01174 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">std::copy</a>(cpu_begin, cpu_end, temp_buffer.begin());
-<a name="l01175"></a>01175 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01176"></a>01176 gpu_begin.<a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>(), CL_TRUE, <span class="keyword">sizeof</span>(SCALARTYPE)*gpu_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>(),
-<a name="l01177"></a>01177 <span class="keyword">sizeof</span>(SCALARTYPE)*(cpu_end - cpu_begin),
-<a name="l01178"></a>01178 &(temp_buffer[0]), 0, NULL, NULL);
-<a name="l01179"></a>01179 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01180"></a>01180 }
-<a name="l01181"></a>01181 }
-<a name="l01182"></a>01182
-<a name="l01183"></a>01183 <span class="comment">// for things like copy(std_vec.begin(), std_vec.end(), vcl_vec.begin() + 1);</span>
-<a name="l01184"></a>01184 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01185"></a><a class="code" href="namespaceviennacl.html#a12da6187594db18ae7aa4874e1ad3f1d">01185</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l01186"></a>01186 CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l01187"></a>01187 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin)
-<a name="l01188"></a>01188 {
-<a name="l01189"></a>01189 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(cpu_begin, cpu_end, <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a>(gpu_begin));
-<a name="l01190"></a>01190 }
-<a name="l01191"></a>01191
-<a name="l01197"></a>01197 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01198"></a><a class="code" href="namespaceviennacl.html#a0d4fd919fa235b1c7dabd0049740e774">01198</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<span class="keyword">const</span> CPUVECTOR & cpu_vec, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & gpu_vec)
-<a name="l01199"></a>01199 {
-<a name="l01200"></a>01200 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(cpu_vec.begin(), cpu_vec.end(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l01201"></a>01201 }
-<a name="l01202"></a>01202
-<a name="l01214"></a>01214 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPU_ITERATOR>
-<a name="l01215"></a><a class="code" href="namespaceviennacl.html#a9250bb8c996f6eab600899146e0cbf26">01215</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(CPU_ITERATOR <span class="keyword">const</span> & cpu_begin,
-<a name="l01216"></a>01216 CPU_ITERATOR <span class="keyword">const</span> & cpu_end,
-<a name="l01217"></a>01217 <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT></a> gpu_begin)
-<a name="l01218"></a>01218 {
-<a name="l01219"></a>01219 <span class="keywordflow">if</span> (cpu_begin != cpu_end)
-<a name="l01220"></a>01220 {
-<a name="l01221"></a>01221 <span class="comment">//we require that the size of the gpu_vector is larger or equal to the cpu-size</span>
-<a name="l01222"></a>01222 cl_int err = clEnqueueWriteBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01223"></a>01223 gpu_begin.<a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>(), CL_TRUE, 0,
-<a name="l01224"></a>01224 <span class="keyword">sizeof</span>(SCALARTYPE)*(cpu_end - cpu_begin), &(*cpu_begin), 0, NULL, NULL);
-<a name="l01225"></a>01225 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01226"></a>01226 }
-<a name="l01227"></a>01227 }
-<a name="l01228"></a>01228
-<a name="l01229"></a>01229
-<a name="l01235"></a>01235 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT, <span class="keyword">typename</span> CPUVECTOR>
-<a name="l01236"></a><a class="code" href="namespaceviennacl.html#af7146b5952b3532c74728adc05d4de55">01236</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">fast_copy</a>(<span class="keyword">const</span> CPUVECTOR & cpu_vec, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & gpu_vec)
-<a name="l01237"></a>01237 {
-<a name="l01238"></a>01238 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(cpu_vec.begin(), cpu_vec.end(), gpu_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l01239"></a>01239 }
-<a name="l01240"></a>01240
-<a name="l01241"></a>01241 <span class="preprocessor"> #ifdef VIENNACL_HAVE_EIGEN</span>
-<a name="l01242"></a>01242 <span class="preprocessor"></span> <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01243"></a>01243 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(Eigen::VectorXf <span class="keyword">const</span> & eigen_vec,
-<a name="l01244"></a>01244 vector<float, ALIGNMENT> & gpu_vec)
-<a name="l01245"></a>01245 {
-<a name="l01246"></a>01246 std::vector<float> entries(eigen_vec.size());
-<a name="l01247"></a>01247 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i<entries.size(); ++i)
-<a name="l01248"></a>01248 entries[i] = eigen_vec(i);
-<a name="l01249"></a>01249 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(entries.begin(), entries.end(), gpu_vec.begin());
-<a name="l01250"></a>01250 }
-<a name="l01251"></a>01251
-<a name="l01252"></a>01252 <span class="keyword">template</span> <<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01253"></a>01253 <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(Eigen::VectorXd <span class="keyword">const</span> & eigen_vec,
-<a name="l01254"></a>01254 vector<double, ALIGNMENT> & gpu_vec)
-<a name="l01255"></a>01255 {
-<a name="l01256"></a>01256 std::vector<double> entries(eigen_vec.size());
-<a name="l01257"></a>01257 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i<entries.size(); ++i)
-<a name="l01258"></a>01258 entries[i] = eigen_vec(i);
-<a name="l01259"></a>01259 <a class="code" href="namespaceviennacl.html#ab917c8f27a8f1cf7b8d6be54989efb99" title="Copies a dense matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU) without tempor...">viennacl::fast_copy</a>(entries.begin(), entries.end(), gpu_vec.begin());
-<a name="l01260"></a>01260 }
-<a name="l01261"></a>01261 <span class="preprocessor"> #endif</span>
-<a name="l01262"></a>01262 <span class="preprocessor"></span>
-<a name="l01263"></a>01263
-<a name="l01264"></a>01264
-<a name="l01265"></a>01265 <span class="comment">//</span>
-<a name="l01267"></a>01267 <span class="comment"></span> <span class="comment">//</span>
-<a name="l01274"></a>01274 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l01275"></a><a class="code" href="namespaceviennacl.html#af638a30a9dd2001143b4c92072c76d48">01275</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l01276"></a>01276 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l01277"></a>01277 <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin)
-<a name="l01278"></a>01278 {
-<a name="l01279"></a>01279 assert(gpu_src_end - gpu_src_begin >= 0);
-<a name="l01280"></a>01280 <span class="keywordflow">if</span> (gpu_src_begin != gpu_src_end)
-<a name="l01281"></a>01281 {
-<a name="l01282"></a>01282 cl_int err = clEnqueueCopyBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(),
-<a name="l01283"></a>01283 gpu_src_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a625da5e66b023a7ed067040a21ec834d">handle</a>(), <span class="comment">//src handle</span>
-<a name="l01284"></a>01284 gpu_dest_begin.<a class="code" href="classviennacl_1_1vector__iterator.html#a7e12b10e3e03ef763a5aa8a70eb21aa7">handle</a>(), <span class="comment">//dest handle</span>
-<a name="l01285"></a>01285 <span class="keyword">sizeof</span>(SCALARTYPE) * gpu_src_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>(), <span class="comment">//src offset</span>
-<a name="l01286"></a>01286 <span class="keyword">sizeof</span>(SCALARTYPE) * gpu_dest_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>(), <span class="comment">//dest offset</span>
-<a name="l01287"></a>01287 <span class="keyword">sizeof</span>(SCALARTYPE) * (gpu_src_end.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>() - gpu_src_begin.<a class="code" href="classviennacl_1_1const__vector__iterator.html#a5a79972f223067007dcfd4350cbad30f">index</a>()), <span class="comment">//data length</span>
-<a name="l01288"></a>01288 0, <span class="comment">//don't know -> check!! (something related to increment?)</span>
-<a name="l01289"></a>01289 NULL, NULL);
-<a name="l01290"></a>01290 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l01291"></a>01291 }
-<a name="l01292"></a>01292 }
-<a name="l01293"></a>01293
-<a name="l01300"></a>01300 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l01301"></a><a class="code" href="namespaceviennacl.html#a9164bd549b986f39b035c24a426869b9">01301</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_begin,
-<a name="l01302"></a>01302 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_end,
-<a name="l01303"></a>01303 <a class="code" href="classviennacl_1_1const__vector__iterator.html" title="A STL-type const-iterator for vector elements. Elements can be accessed, but cannot be manipulated...">const_vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a> gpu_dest_begin)
-<a name="l01304"></a>01304 {
-<a name="l01305"></a>01305 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(gpu_src_begin, gpu_src_end, <a class="code" href="classviennacl_1_1vector__iterator.html" title="A STL-type iterator for vector elements. Elements can be accessed and manipulated. VERY SLOW!!">vector_iterator<SCALARTYPE, ALIGNMENT_DEST></a>(gpu_dest_begin));
-<a name="l01306"></a>01306 }
-<a name="l01307"></a>01307
-<a name="l01313"></a>01313 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_SRC, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT_DEST>
-<a name="l01314"></a><a class="code" href="namespaceviennacl.html#ad823fb30fd180da375a1e09d56c0a1b8">01314</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT_SRC></a> <span class="keyword">const</span> & gpu_src_vec,
-<a name="l01315"></a>01315 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT_DEST></a> & gpu_dest_vec )
-<a name="l01316"></a>01316 {
-<a name="l01317"></a>01317 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">viennacl::copy</a>(gpu_src_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>(), gpu_src_vec.<a class="code" href="classviennacl_1_1vector.html#acad38d52497a975bfb6f2f6acd76631f" title="Returns an iterator pointing to the end of the vector (STL like).">end</a>(), gpu_dest_vec.<a class="code" href="classviennacl_1_1vector.html#ad69bd11391be1a1dba5c8202259664f8" title="Returns an iterator pointing to the beginning of the vector (STL like).">begin</a>());
-<a name="l01318"></a>01318 }
-<a name="l01319"></a>01319
-<a name="l01320"></a>01320
-<a name="l01321"></a>01321
-<a name="l01322"></a>01322
-<a name="l01323"></a>01323
-<a name="l01324"></a>01324
-<a name="l01325"></a>01325 <span class="comment">//global functions for handling vectors:</span>
-<a name="l01330"></a>01330 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01331"></a><a class="code" href="namespaceviennacl.html#a5e572599ddbae8812154538849fa707c">01331</a> std::ostream & operator<<(std::ostream & s, vector<SCALARTYPE,ALIGNMENT> <span class="keyword">const</span> & val)
-<a name="l01332"></a>01332 {
-<a name="l01333"></a>01333 <a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().<a class="code" href="classviennacl_1_1ocl_1_1command__queue.html#adc3c5cffb594b811f8a851924349af5b" title="Waits until all kernels in the queue have finished their execution.">finish</a>();
-<a name="l01334"></a>01334 std::vector<SCALARTYPE> tmp(val.size());
-<a name="l01335"></a>01335 <a class="code" href="namespaceviennacl.html#a5684964ce1519c88a443aa14be9428f0" title="Copies a sparse matrix from the host to the OpenCL device (either GPU or multi-core CPU)...">copy</a>(val.begin(), val.end(), tmp.begin());
-<a name="l01336"></a>01336 std::cout << <span class="stringliteral">"["</span> << val.size() << <span class="stringliteral">"]("</span>;
-<a name="l01337"></a>01337 <span class="keywordflow">for</span> (<span class="keyword">typename</span> std::vector<SCALARTYPE>::size_type i=0; i<val.size(); ++i)
-<a name="l01338"></a>01338 {
-<a name="l01339"></a>01339 <span class="keywordflow">if</span> (i > 0)
-<a name="l01340"></a>01340 s << <span class="stringliteral">","</span>;
-<a name="l01341"></a>01341 s << tmp[i];
-<a name="l01342"></a>01342 }
-<a name="l01343"></a>01343 std::cout << <span class="stringliteral">")"</span>;
-<a name="l01344"></a>01344 <span class="keywordflow">return</span> s;
-<a name="l01345"></a>01345 }
-<a name="l01346"></a>01346
-<a name="l01353"></a>01353 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01354"></a><a class="code" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142">01354</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl.html#a0c01dfab44c6d3849f7d0eac55539142" title="Swaps the contents of two vectors, data is copied.">swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l01355"></a>01355 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l01356"></a>01356 {
-<a name="l01357"></a>01357 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01358"></a>01358
-<a name="l01359"></a>01359 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"swap"</span>);
-<a name="l01360"></a>01360
-<a name="l01361"></a>01361 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, static_cast<cl_uint>(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())));
-<a name="l01362"></a>01362 }
-<a name="l01363"></a>01363
-<a name="l01369"></a>01369 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l01370"></a><a class="code" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0">01370</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl.html#a976181b1f6aa698b64a4746f0949fce0" title="Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied.">fast_swap</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & v1,
-<a name="l01371"></a>01371 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, ALIGNMENT></a> & v2)
-<a name="l01372"></a>01372 {
-<a name="l01373"></a>01373 <span class="keywordflow">return</span> v1.<a class="code" href="classviennacl_1_1vector.html#a3f3c31234d9a1c823383bd6e8c2c9222" title="Swaps the handles of two vectors by swapping the OpenCL handles only, no data copy.">fast_swap</a>(v2);
-<a name="l01374"></a>01374 }
-<a name="l01375"></a>01375
-<a name="l01376"></a>01376
-<a name="l01377"></a>01377
-<a name="l01379"></a>01379
-<a name="l01384"></a>01384 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l01385"></a><a class="code" href="namespaceviennacl.html#aa60d7cda126efd13c3413453606850b7">01385</a> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> SCALARTYPE, op_prod> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(SCALARTYPE <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01386"></a>01386 {
-<a name="l01387"></a>01387 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> SCALARTYPE, op_prod>(vec, value);
-<a name="l01388"></a>01388 }
-<a name="l01389"></a>01389
-<a name="l01395"></a>01395 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A>
-<a name="l01396"></a><a class="code" href="namespaceviennacl.html#a3b34a609403378a81c3a2589a5418077">01396</a> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a5c33da5929c9f2f9ef8d006d2350e6ec">value</a>, <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01397"></a>01397 {
-<a name="l01398"></a>01398 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< const vector<SCALARTYPE, A></a>, <span class="keyword">const</span> <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a>, op_prod>(vec, value);
-<a name="l01399"></a>01399 }
-<a name="l01400"></a>01400
-<a name="l01401"></a>01401
-<a name="l01402"></a>01402 <span class="comment">//addition and subtraction of two vector_expressions:</span>
-<a name="l01408"></a>01408 <span class="comment"></span> <span class="keyword">template</span> <<span class="keyword">typename</span> LHS1, <span class="keyword">typename</span> RHS1, <span class="keyword">typename</span> OP1,
-<a name="l01409"></a>01409 <span class="keyword">typename</span> LHS2, <span class="keyword">typename</span> RHS2, <span class="keyword">typename</span> OP2>
-<a name="l01410"></a>01410 <span class="keyword">typename</span> vector_expression< LHS1, RHS1, OP1>::VectorType
-<a name="l01411"></a><a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659">01411</a> <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">operator + </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS1, RHS1, OP1></a> <span class="keyword">const</span> & proxy1,
-<a name="l01412"></a>01412 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS2, RHS2, OP2></a> <span class="keyword">const</span> & proxy2)
-<a name="l01413"></a>01413 {
-<a name="l01414"></a>01414 assert(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == proxy2.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01415"></a>01415 <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067" title="Extracts the vector type from the two operands.">vector_expression< LHS1, RHS1, OP1>::VectorType</a> result(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01416"></a>01416 result = proxy1;
-<a name="l01417"></a>01417 result += proxy2;
-<a name="l01418"></a>01418 <span class="keywordflow">return</span> result;
-<a name="l01419"></a>01419 }
-<a name="l01420"></a>01420
-<a name="l01426"></a>01426 <span class="keyword">template</span> <<span class="keyword">typename</span> LHS1, <span class="keyword">typename</span> RHS1, <span class="keyword">typename</span> OP1,
-<a name="l01427"></a>01427 <span class="keyword">typename</span> LHS2, <span class="keyword">typename</span> RHS2, <span class="keyword">typename</span> OP2>
-<a name="l01428"></a>01428 <span class="keyword">typename</span> vector_expression< LHS1, RHS1, OP1>::VectorType
-<a name="l01429"></a><a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57">01429</a> <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">operator - </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS1, RHS1, OP1></a> <span class="keyword">const</span> & proxy1,
-<a name="l01430"></a>01430 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS2, RHS2, OP2></a> <span class="keyword">const</span> & proxy2)
-<a name="l01431"></a>01431 {
-<a name="l01432"></a>01432 assert(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == proxy2.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01433"></a>01433 <span class="keyword">typename</span> <a class="code" href="classviennacl_1_1vector__expression.html#a5db65f00c1e206d9129dcd7721e46067" title="Extracts the vector type from the two operands.">vector_expression< LHS1, RHS1, OP1>::VectorType</a> result(proxy1.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01434"></a>01434 result = proxy1;
-<a name="l01435"></a>01435 result -= proxy2;
-<a name="l01436"></a>01436 <span class="keywordflow">return</span> result;
-<a name="l01437"></a>01437 }
-<a name="l01438"></a>01438
-<a name="l01440"></a>01440
-<a name="l01446"></a>01446 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01447"></a><a class="code" href="namespaceviennacl.html#a0808ef51d9a2d2e1ecbed3d4b63e159f">01447</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <a class="code" href="namespaceviennacl.html#aae3143a0fbb9e586b489cea90acf6659" title="Operator overload for the addition of two vector expressions.">operator + </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01448"></a>01448 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01449"></a>01449 {
-<a name="l01450"></a>01450 assert(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01451"></a>01451 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01452"></a>01452 result = proxy;
-<a name="l01453"></a>01453 result += vec;
-<a name="l01454"></a>01454 <span class="keywordflow">return</span> result;
-<a name="l01455"></a>01455 }
-<a name="l01456"></a>01456
-<a name="l01462"></a>01462 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> A, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01463"></a><a class="code" href="namespaceviennacl.html#ae00e47f8124b08cbeb8b7fc9ff537081">01463</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <a class="code" href="namespaceviennacl.html#a77d42d098f9212ba53487deb6ddacf57" title="Operator overload for the subtraction of two vector expressions.">operator - </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01464"></a>01464 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> <span class="keyword">const</span> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>)
-<a name="l01465"></a>01465 {
-<a name="l01466"></a>01466 assert(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>() == vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01467"></a>01467 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE, A></a> result(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l01468"></a>01468 result = proxy;
-<a name="l01469"></a>01469 result -= vec;
-<a name="l01470"></a>01470 <span class="keywordflow">return</span> result;
-<a name="l01471"></a>01471 }
-<a name="l01472"></a>01472
-<a name="l01473"></a>01473
-<a name="l01479"></a>01479 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01480"></a><a class="code" href="namespaceviennacl.html#a00f47d8ad32713f98c6979c245b88cdb">01480</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01481"></a>01481 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l01482"></a>01482 {
-<a name="l01483"></a>01483 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01484"></a>01484 result = proxy;
-<a name="l01485"></a>01485 result *= val;
-<a name="l01486"></a>01486 <span class="keywordflow">return</span> result;
-<a name="l01487"></a>01487 }
-<a name="l01488"></a>01488
-<a name="l01494"></a>01494 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01495"></a><a class="code" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad">01495</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a3aeb5b431a9c6d0b3af24a1513e8e9ad" title="Operator overload for the division of a vector expression by a scalar from the right, e.g. (beta * vec1) / alpha. Here, beta * vec1 is wrapped into a vector_expression and then divided by alpha.">operator / </a>(<a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy,
-<a name="l01496"></a>01496 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val)
-<a name="l01497"></a>01497 {
-<a name="l01498"></a>01498 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01499"></a>01499 result = proxy;
-<a name="l01500"></a>01500 result /= val;
-<a name="l01501"></a>01501 <span class="keywordflow">return</span> result;
-<a name="l01502"></a>01502 }
-<a name="l01503"></a>01503
-<a name="l01504"></a>01504
-<a name="l01506"></a>01506
-<a name="l01512"></a>01512 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01513"></a><a class="code" href="namespaceviennacl.html#a66a24c58d27c6368ac879f4d7cc4cfc9">01513</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(<a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & val,
-<a name="l01514"></a>01514 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy)
-<a name="l01515"></a>01515 {
-<a name="l01516"></a>01516 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01517"></a>01517 result = proxy;
-<a name="l01518"></a>01518 result *= val;
-<a name="l01519"></a>01519 <span class="keywordflow">return</span> result;
-<a name="l01520"></a>01520 }
-<a name="l01521"></a>01521
-<a name="l01527"></a>01527 <span class="keyword">template</span> <<span class="keyword">typename</span> SCALARTYPE, <span class="keyword">typename</span> LHS, <span class="keyword">typename</span> RHS, <span class="keyword">typename</span> OP>
-<a name="l01528"></a><a class="code" href="namespaceviennacl.html#a4522333fedaf508711a5aa02c47e5c7a">01528</a> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> <a class="code" href="namespaceviennacl.html#a45c8d32b7d99c62cdb10899d70e7bad9">operator * </a>(SCALARTYPE val,
-<a name="l01529"></a>01529 <a class="code" href="classviennacl_1_1vector__expression.html" title="An expression template class that represents a binary operation that yields a vector.">viennacl::vector_expression< LHS, RHS, OP></a> <span class="keyword">const</span> & proxy)
-<a name="l01530"></a>01530 {
-<a name="l01531"></a>01531 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> result(proxy.<a class="code" href="classviennacl_1_1vector__expression.html#a90ca964ebcc1b02bbcde225edd49e812" title="Returns the size of the result vector.">size</a>());
-<a name="l01532"></a>01532 result = proxy;
-<a name="l01533"></a>01533 result *= val;
-<a name="l01534"></a>01534 <span class="keywordflow">return</span> result;
-<a name="l01535"></a>01535 }
-<a name="l01536"></a>01536
-<a name="l01537"></a>01537 }
-<a name="l01538"></a>01538
-<a name="l01539"></a>01539 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__kernels_8h.html b/doc/doxygen/html/vector__kernels_8h.html
deleted file mode 100644
index 553ec57..0000000
--- a/doc/doxygen/html/vector__kernels_8h.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#nested-classes">Data Structures</a> |
-<a href="#namespaces">Namespaces</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h File Reference</h1> </div>
-</div>
-<div class="contents">
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="platform_8hpp_source.html">viennacl/ocl/platform.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="utils_8hpp_source.html">viennacl/ocl/utils.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__source_8h_source.html">viennacl/linalg/kernels/vector_source.h</a>"</code><br/>
-
-<p><a href="vector__kernels_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="nested-classes"></a>
-Data Structures</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">vector< float, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">vector< float, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">vector< float, 1 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">vector< double, 16 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">vector< double, 4 ></a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">vector< double, 1 ></a></td></tr>
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__kernels_8h_source.html b/doc/doxygen/html/vector__kernels_8h_source.html
deleted file mode 100644
index f549a54..0000000
--- a/doc/doxygen/html/vector__kernels_8h_source.html
+++ /dev/null
@@ -1,582 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_kernels.h</h1> </div>
-</div>
-<div class="contents">
-<a href="vector__kernels_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_KERNELS_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_KERNELS_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00004"></a>00004 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00005"></a>00005 <span class="preprocessor">#include "<a class="code" href="platform_8hpp.html" title="Implements a OpenCL platform within ViennaCL.">viennacl/ocl/platform.hpp</a>"</span>
-<a name="l00006"></a>00006 <span class="preprocessor">#include "<a class="code" href="utils_8hpp.html">viennacl/ocl/utils.hpp</a>"</span>
-<a name="l00007"></a>00007 <span class="preprocessor">#include "<a class="code" href="vector__source_8h.html">viennacl/linalg/kernels/vector_source.h</a>"</span>
-<a name="l00008"></a>00008
-<a name="l00009"></a>00009 <span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00010"></a>00010 <span class="keyword">namespace </span>viennacl
-<a name="l00011"></a>00011 {
-<a name="l00012"></a>00012 <span class="keyword">namespace </span>linalg
-<a name="l00013"></a>00013 {
-<a name="l00014"></a>00014 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00015"></a>00015 {
-<a name="l00016"></a>00016 <span class="keyword">template</span><<span class="keyword">class</span> TYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> alignment>
-<a name="l00017"></a>00017 <span class="keyword">struct </span>vector;
-<a name="l00018"></a>00018
-<a name="l00019"></a>00019
-<a name="l00021"></a>00021 <span class="keyword">template</span> <>
-<a name="l00022"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html">00022</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><float, 16>
-<a name="l00023"></a>00023 {
-<a name="l00024"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00024</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00025"></a>00025 {
-<a name="l00026"></a>00026 <span class="keywordflow">return</span> <span class="stringliteral">"f_vector_16"</span>;
-<a name="l00027"></a>00027 }
-<a name="l00028"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00028</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00029"></a>00029 {
-<a name="l00030"></a>00030 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00031"></a>00031 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00032"></a>00032 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00034"></a>00034 {
-<a name="l00035"></a>00035 std::string source;
-<a name="l00036"></a>00036 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a>);
-<a name="l00037"></a>00037 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>);
-<a name="l00038"></a>00038 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>);
-<a name="l00039"></a>00039 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a>);
-<a name="l00040"></a>00040 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>);
-<a name="l00041"></a>00041 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>);
-<a name="l00042"></a>00042 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>);
-<a name="l00043"></a>00043 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a>);
-<a name="l00044"></a>00044 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>);
-<a name="l00045"></a>00045 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>);
-<a name="l00046"></a>00046 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>);
-<a name="l00047"></a>00047 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a>);
-<a name="l00048"></a>00048 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>);
-<a name="l00049"></a>00049 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>);
-<a name="l00050"></a>00050 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>);
-<a name="l00051"></a>00051 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>);
-<a name="l00052"></a>00052 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a>);
-<a name="l00053"></a>00053 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a>);
-<a name="l00054"></a>00054 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>);
-<a name="l00055"></a>00055 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>);
-<a name="l00056"></a>00056 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a>);
-<a name="l00057"></a>00057 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a>);
-<a name="l00058"></a>00058 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>);
-<a name="l00059"></a>00059 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>);
-<a name="l00060"></a>00060 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>);
-<a name="l00061"></a>00061 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a>);
-<a name="l00062"></a>00062 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>);
-<a name="l00063"></a>00063 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>);
-<a name="l00064"></a>00064 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>);
-<a name="l00065"></a>00065 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>);
-<a name="l00066"></a>00066 std::string prog_name = program_name();
-<a name="l00067"></a>00067 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00068"></a>00068 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00069"></a>00069 <span class="preprocessor"> #endif</span>
-<a name="l00070"></a>00070 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00071"></a>00071 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00072"></a>00072 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00073"></a>00073 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00074"></a>00074 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00075"></a>00075 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00076"></a>00076 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00077"></a>00077 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00078"></a>00078 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00079"></a>00079 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00080"></a>00080 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00081"></a>00081 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00082"></a>00082 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00083"></a>00083 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00084"></a>00084 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00085"></a>00085 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00086"></a>00086 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00087"></a>00087 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00088"></a>00088 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00089"></a>00089 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00090"></a>00090 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00091"></a>00091 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00092"></a>00092 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00093"></a>00093 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00094"></a>00094 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00095"></a>00095 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00096"></a>00096 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00097"></a>00097 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00098"></a>00098 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00099"></a>00099 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00100"></a>00100 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00101"></a>00101 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00102"></a>00102 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00103"></a>00103 } <span class="comment">//if</span>
-<a name="l00104"></a>00104 } <span class="comment">//init</span>
-<a name="l00105"></a>00105 }; <span class="comment">// struct</span>
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keyword">template</span> <>
-<a name="l00108"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html">00108</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><float, 4>
-<a name="l00109"></a>00109 {
-<a name="l00110"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00110</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00111"></a>00111 {
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> <span class="stringliteral">"f_vector_4"</span>;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00114</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00115"></a>00115 {
-<a name="l00116"></a>00116 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00117"></a>00117 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00118"></a>00118 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00120"></a>00120 {
-<a name="l00121"></a>00121 std::string source;
-<a name="l00122"></a>00122 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>);
-<a name="l00123"></a>00123 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>);
-<a name="l00124"></a>00124 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>);
-<a name="l00125"></a>00125 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>);
-<a name="l00126"></a>00126 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>);
-<a name="l00127"></a>00127 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>);
-<a name="l00128"></a>00128 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>);
-<a name="l00129"></a>00129 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>);
-<a name="l00130"></a>00130 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>);
-<a name="l00131"></a>00131 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>);
-<a name="l00132"></a>00132 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>);
-<a name="l00133"></a>00133 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>);
-<a name="l00134"></a>00134 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>);
-<a name="l00135"></a>00135 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>);
-<a name="l00136"></a>00136 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>);
-<a name="l00137"></a>00137 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>);
-<a name="l00138"></a>00138 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>);
-<a name="l00139"></a>00139 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>);
-<a name="l00140"></a>00140 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>);
-<a name="l00141"></a>00141 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>);
-<a name="l00142"></a>00142 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>);
-<a name="l00143"></a>00143 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>);
-<a name="l00144"></a>00144 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>);
-<a name="l00145"></a>00145 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>);
-<a name="l00146"></a>00146 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>);
-<a name="l00147"></a>00147 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>);
-<a name="l00148"></a>00148 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>);
-<a name="l00149"></a>00149 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>);
-<a name="l00150"></a>00150 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>);
-<a name="l00151"></a>00151 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>);
-<a name="l00152"></a>00152 std::string prog_name = program_name();
-<a name="l00153"></a>00153 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00154"></a>00154 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00155"></a>00155 <span class="preprocessor"> #endif</span>
-<a name="l00156"></a>00156 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00157"></a>00157 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00158"></a>00158 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00159"></a>00159 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00160"></a>00160 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00161"></a>00161 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00162"></a>00162 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00163"></a>00163 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00164"></a>00164 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00165"></a>00165 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00166"></a>00166 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00167"></a>00167 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00168"></a>00168 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00169"></a>00169 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00170"></a>00170 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00171"></a>00171 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00172"></a>00172 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00173"></a>00173 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00174"></a>00174 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00175"></a>00175 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00176"></a>00176 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00177"></a>00177 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00178"></a>00178 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00179"></a>00179 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00180"></a>00180 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00181"></a>00181 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00182"></a>00182 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00183"></a>00183 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00184"></a>00184 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00185"></a>00185 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00186"></a>00186 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00187"></a>00187 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00188"></a>00188 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00189"></a>00189 } <span class="comment">//if</span>
-<a name="l00190"></a>00190 } <span class="comment">//init</span>
-<a name="l00191"></a>00191 }; <span class="comment">// struct</span>
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 <span class="keyword">template</span> <>
-<a name="l00194"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html">00194</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><float, 1>
-<a name="l00195"></a>00195 {
-<a name="l00196"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00196</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00197"></a>00197 {
-<a name="l00198"></a>00198 <span class="keywordflow">return</span> <span class="stringliteral">"f_vector_1"</span>;
-<a name="l00199"></a>00199 }
-<a name="l00200"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01float_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00200</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00201"></a>00201 {
-<a name="l00202"></a>00202 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply</a>();
-<a name="l00203"></a>00203 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00204"></a>00204 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00206"></a>00206 {
-<a name="l00207"></a>00207 std::string source;
-<a name="l00208"></a>00208 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>);
-<a name="l00209"></a>00209 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>);
-<a name="l00210"></a>00210 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>);
-<a name="l00211"></a>00211 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>);
-<a name="l00212"></a>00212 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>);
-<a name="l00213"></a>00213 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a>);
-<a name="l00214"></a>00214 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>);
-<a name="l00215"></a>00215 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>);
-<a name="l00216"></a>00216 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a>);
-<a name="l00217"></a>00217 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>);
-<a name="l00218"></a>00218 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>);
-<a name="l00219"></a>00219 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>);
-<a name="l00220"></a>00220 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>);
-<a name="l00221"></a>00221 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a>);
-<a name="l00222"></a>00222 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a>);
-<a name="l00223"></a>00223 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a>);
-<a name="l00224"></a>00224 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>);
-<a name="l00225"></a>00225 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>);
-<a name="l00226"></a>00226 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>);
-<a name="l00227"></a>00227 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a>);
-<a name="l00228"></a>00228 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>);
-<a name="l00229"></a>00229 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>);
-<a name="l00230"></a>00230 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>);
-<a name="l00231"></a>00231 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>);
-<a name="l00232"></a>00232 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>);
-<a name="l00233"></a>00233 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>);
-<a name="l00234"></a>00234 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>);
-<a name="l00235"></a>00235 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a>);
-<a name="l00236"></a>00236 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>);
-<a name="l00237"></a>00237 source.append(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>);
-<a name="l00238"></a>00238 std::string prog_name = program_name();
-<a name="l00239"></a>00239 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00240"></a>00240 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00241"></a>00241 <span class="preprocessor"> #endif</span>
-<a name="l00242"></a>00242 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00243"></a>00243 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00244"></a>00244 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00245"></a>00245 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00246"></a>00246 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00247"></a>00247 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00248"></a>00248 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00249"></a>00249 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00250"></a>00250 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00251"></a>00251 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00252"></a>00252 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00253"></a>00253 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00254"></a>00254 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00255"></a>00255 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00256"></a>00256 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00257"></a>00257 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00258"></a>00258 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00259"></a>00259 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00260"></a>00260 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00261"></a>00261 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00262"></a>00262 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00263"></a>00263 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00264"></a>00264 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00265"></a>00265 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00266"></a>00266 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00267"></a>00267 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00268"></a>00268 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00269"></a>00269 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00270"></a>00270 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00271"></a>00271 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00272"></a>00272 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00273"></a>00273 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00274"></a>00274 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00275"></a>00275 } <span class="comment">//if</span>
-<a name="l00276"></a>00276 } <span class="comment">//init</span>
-<a name="l00277"></a>00277 }; <span class="comment">// struct</span>
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279
-<a name="l00280"></a>00280
-<a name="l00282"></a>00282 <span class="keyword">template</span> <>
-<a name="l00283"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html">00283</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><double, 16>
-<a name="l00284"></a>00284 {
-<a name="l00285"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#adb4613919bae5cf962e40b99da83dd96">00285</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00286"></a>00286 {
-<a name="l00287"></a>00287 <span class="keywordflow">return</span> <span class="stringliteral">"d_vector_16"</span>;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_0116_01_4.html#aedc913c139bb562646d3459b0ca28997">00289</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00290"></a>00290 {
-<a name="l00291"></a>00291 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00292"></a>00292 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00293"></a>00293 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00294"></a>00294 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00295"></a>00295 {
-<a name="l00296"></a>00296 std::string source;
-<a name="l00297"></a>00297 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00298"></a>00298 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a>, fp64_ext));
-<a name="l00299"></a>00299 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>, fp64_ext));
-<a name="l00300"></a>00300 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>, fp64_ext));
-<a name="l00301"></a>00301 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a>, fp64_ext));
-<a name="l00302"></a>00302 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>, fp64_ext));
-<a name="l00303"></a>00303 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>, fp64_ext));
-<a name="l00304"></a>00304 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>, fp64_ext));
-<a name="l00305"></a>00305 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a>, fp64_ext));
-<a name="l00306"></a>00306 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>, fp64_ext));
-<a name="l00307"></a>00307 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>, fp64_ext));
-<a name="l00308"></a>00308 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>, fp64_ext));
-<a name="l00309"></a>00309 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a>, fp64_ext));
-<a name="l00310"></a>00310 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>, fp64_ext));
-<a name="l00311"></a>00311 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>, fp64_ext));
-<a name="l00312"></a>00312 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>, fp64_ext));
-<a name="l00313"></a>00313 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>, fp64_ext));
-<a name="l00314"></a>00314 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a>, fp64_ext));
-<a name="l00315"></a>00315 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a>, fp64_ext));
-<a name="l00316"></a>00316 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>, fp64_ext));
-<a name="l00317"></a>00317 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>, fp64_ext));
-<a name="l00318"></a>00318 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a>, fp64_ext));
-<a name="l00319"></a>00319 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a>, fp64_ext));
-<a name="l00320"></a>00320 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>, fp64_ext));
-<a name="l00321"></a>00321 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>, fp64_ext));
-<a name="l00322"></a>00322 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00323"></a>00323 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a>, fp64_ext));
-<a name="l00324"></a>00324 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>, fp64_ext));
-<a name="l00325"></a>00325 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>, fp64_ext));
-<a name="l00326"></a>00326 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>, fp64_ext));
-<a name="l00327"></a>00327 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>, fp64_ext));
-<a name="l00328"></a>00328 std::string prog_name = program_name();
-<a name="l00329"></a>00329 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00330"></a>00330 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00331"></a>00331 <span class="preprocessor"> #endif</span>
-<a name="l00332"></a>00332 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00333"></a>00333 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00334"></a>00334 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00335"></a>00335 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00336"></a>00336 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00337"></a>00337 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00338"></a>00338 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00339"></a>00339 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00340"></a>00340 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00341"></a>00341 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00342"></a>00342 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00343"></a>00343 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00344"></a>00344 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00345"></a>00345 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00346"></a>00346 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00347"></a>00347 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00348"></a>00348 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00349"></a>00349 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00350"></a>00350 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00351"></a>00351 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00352"></a>00352 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00353"></a>00353 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00354"></a>00354 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00355"></a>00355 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00356"></a>00356 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00357"></a>00357 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00358"></a>00358 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00359"></a>00359 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00360"></a>00360 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00361"></a>00361 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00362"></a>00362 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00363"></a>00363 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00364"></a>00364 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00365"></a>00365 } <span class="comment">//if</span>
-<a name="l00366"></a>00366 } <span class="comment">//init</span>
-<a name="l00367"></a>00367 }; <span class="comment">// struct</span>
-<a name="l00368"></a>00368
-<a name="l00369"></a>00369 <span class="keyword">template</span> <>
-<a name="l00370"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html">00370</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><double, 4>
-<a name="l00371"></a>00371 {
-<a name="l00372"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#adb4613919bae5cf962e40b99da83dd96">00372</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00373"></a>00373 {
-<a name="l00374"></a>00374 <span class="keywordflow">return</span> <span class="stringliteral">"d_vector_4"</span>;
-<a name="l00375"></a>00375 }
-<a name="l00376"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_014_01_4.html#aedc913c139bb562646d3459b0ca28997">00376</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00377"></a>00377 {
-<a name="l00378"></a>00378 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00379"></a>00379 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00380"></a>00380 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00381"></a>00381 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00382"></a>00382 {
-<a name="l00383"></a>00383 std::string source;
-<a name="l00384"></a>00384 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00385"></a>00385 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>, fp64_ext));
-<a name="l00386"></a>00386 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>, fp64_ext));
-<a name="l00387"></a>00387 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>, fp64_ext));
-<a name="l00388"></a>00388 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>, fp64_ext));
-<a name="l00389"></a>00389 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>, fp64_ext));
-<a name="l00390"></a>00390 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a>, fp64_ext));
-<a name="l00391"></a>00391 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>, fp64_ext));
-<a name="l00392"></a>00392 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>, fp64_ext));
-<a name="l00393"></a>00393 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a>, fp64_ext));
-<a name="l00394"></a>00394 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>, fp64_ext));
-<a name="l00395"></a>00395 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>, fp64_ext));
-<a name="l00396"></a>00396 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>, fp64_ext));
-<a name="l00397"></a>00397 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>, fp64_ext));
-<a name="l00398"></a>00398 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a>, fp64_ext));
-<a name="l00399"></a>00399 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a>, fp64_ext));
-<a name="l00400"></a>00400 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a>, fp64_ext));
-<a name="l00401"></a>00401 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>, fp64_ext));
-<a name="l00402"></a>00402 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>, fp64_ext));
-<a name="l00403"></a>00403 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>, fp64_ext));
-<a name="l00404"></a>00404 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a>, fp64_ext));
-<a name="l00405"></a>00405 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>, fp64_ext));
-<a name="l00406"></a>00406 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>, fp64_ext));
-<a name="l00407"></a>00407 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>, fp64_ext));
-<a name="l00408"></a>00408 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>, fp64_ext));
-<a name="l00409"></a>00409 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00410"></a>00410 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>, fp64_ext));
-<a name="l00411"></a>00411 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>, fp64_ext));
-<a name="l00412"></a>00412 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a>, fp64_ext));
-<a name="l00413"></a>00413 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>, fp64_ext));
-<a name="l00414"></a>00414 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>, fp64_ext));
-<a name="l00415"></a>00415 std::string prog_name = program_name();
-<a name="l00416"></a>00416 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00417"></a>00417 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00418"></a>00418 <span class="preprocessor"> #endif</span>
-<a name="l00419"></a>00419 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00420"></a>00420 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00421"></a>00421 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00422"></a>00422 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00423"></a>00423 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00424"></a>00424 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00425"></a>00425 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00426"></a>00426 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00427"></a>00427 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00428"></a>00428 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00429"></a>00429 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00430"></a>00430 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00431"></a>00431 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00432"></a>00432 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00433"></a>00433 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00434"></a>00434 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00435"></a>00435 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00436"></a>00436 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00437"></a>00437 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00438"></a>00438 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00439"></a>00439 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00440"></a>00440 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00441"></a>00441 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00442"></a>00442 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00443"></a>00443 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00444"></a>00444 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00445"></a>00445 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00446"></a>00446 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00447"></a>00447 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00448"></a>00448 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00449"></a>00449 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00450"></a>00450 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00451"></a>00451 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00452"></a>00452 } <span class="comment">//if</span>
-<a name="l00453"></a>00453 } <span class="comment">//init</span>
-<a name="l00454"></a>00454 }; <span class="comment">// struct</span>
-<a name="l00455"></a>00455
-<a name="l00456"></a>00456 <span class="keyword">template</span> <>
-<a name="l00457"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html">00457</a> <span class="keyword">struct </span><a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">vector</a><double, 1>
-<a name="l00458"></a>00458 {
-<a name="l00459"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#adb4613919bae5cf962e40b99da83dd96">00459</a> <span class="keyword">static</span> std::string program_name()
-<a name="l00460"></a>00460 {
-<a name="l00461"></a>00461 <span class="keywordflow">return</span> <span class="stringliteral">"d_vector_1"</span>;
-<a name="l00462"></a>00462 }
-<a name="l00463"></a><a class="code" href="structviennacl_1_1linalg_1_1kernels_1_1vector_3_01double_00_011_01_4.html#aedc913c139bb562646d3459b0ca28997">00463</a> <span class="keyword">static</span> <span class="keywordtype">void</span> init()
-<a name="l00464"></a>00464 {
-<a name="l00465"></a>00465 <a class="code" href="structviennacl_1_1ocl_1_1_d_o_u_b_l_e___p_r_e_c_i_s_i_o_n___c_h_e_c_k_e_r.html" title="Ensures that double precision types are only allocated if it is supported by the device. If double precision is requested for a device not capable of providing that, a double_precision_not_provided_error is thrown.">viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply</a>();
-<a name="l00466"></a>00466 <span class="keyword">static</span> std::map<cl_context, bool> init_done;
-<a name="l00467"></a>00467 <a class="code" href="classviennacl_1_1ocl_1_1context.html">viennacl::ocl::context</a> & context_ = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>();
-<a name="l00468"></a>00468 <span class="keywordflow">if</span> (!init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()])
-<a name="l00469"></a>00469 {
-<a name="l00470"></a>00470 std::string source;
-<a name="l00471"></a>00471 std::string fp64_ext = <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().<a class="code" href="classviennacl_1_1ocl_1_1device.html#a36eb84a793487af78b6a620b418efb6a">double_support_extension</a>();
-<a name="l00472"></a>00472 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a>, fp64_ext));
-<a name="l00473"></a>00473 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a>, fp64_ext));
-<a name="l00474"></a>00474 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a>, fp64_ext));
-<a name="l00475"></a>00475 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a>, fp64_ext));
-<a name="l00476"></a>00476 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a>, fp64_ext));
-<a name="l00477"></a>00477 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a>, fp64_ext));
-<a name="l00478"></a>00478 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a>, fp64_ext));
-<a name="l00479"></a>00479 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a>, fp64_ext));
-<a name="l00480"></a>00480 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a>, fp64_ext));
-<a name="l00481"></a>00481 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a>, fp64_ext));
-<a name="l00482"></a>00482 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a>, fp64_ext));
-<a name="l00483"></a>00483 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a>, fp64_ext));
-<a name="l00484"></a>00484 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a>, fp64_ext));
-<a name="l00485"></a>00485 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a>, fp64_ext));
-<a name="l00486"></a>00486 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a>, fp64_ext));
-<a name="l00487"></a>00487 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a>, fp64_ext));
-<a name="l00488"></a>00488 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a>, fp64_ext));
-<a name="l00489"></a>00489 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a>, fp64_ext));
-<a name="l00490"></a>00490 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a>, fp64_ext));
-<a name="l00491"></a>00491 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a>, fp64_ext));
-<a name="l00492"></a>00492 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a>, fp64_ext));
-<a name="l00493"></a>00493 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a>, fp64_ext));
-<a name="l00494"></a>00494 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a>, fp64_ext));
-<a name="l00495"></a>00495 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a>, fp64_ext));
-<a name="l00496"></a>00496 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a>, fp64_ext));
-<a name="l00497"></a>00497 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a>, fp64_ext));
-<a name="l00498"></a>00498 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a>, fp64_ext));
-<a name="l00499"></a>00499 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a>, fp64_ext));
-<a name="l00500"></a>00500 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a>, fp64_ext));
-<a name="l00501"></a>00501 source.append(<a class="code" href="namespaceviennacl_1_1tools.html#acac5a5c4b9410d22c87a4286042a42b0" title="Create a double precision kernel out of a single precision kernel.">viennacl::tools::make_double_kernel</a>(<a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a>, fp64_ext));
-<a name="l00502"></a>00502 std::string prog_name = program_name();
-<a name="l00503"></a>00503 <span class="preprocessor"> #ifdef VIENNACL_BUILD_INFO</span>
-<a name="l00504"></a>00504 <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Creating program "</span> << prog_name << std::endl;
-<a name="l00505"></a>00505 <span class="preprocessor"> #endif</span>
-<a name="l00506"></a>00506 <span class="preprocessor"></span> context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a87c0fbb40f4ee1928c72dbf8d19512bb" title="Adds a program to the context.">add_program</a>(source, prog_name);
-<a name="l00507"></a>00507 <a class="code" href="classviennacl_1_1ocl_1_1program.html">viennacl::ocl::program</a> & prog_ = context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a9258b6b0121e6f1bebe7b83b9e2a625a" title="Returns the program with the provided name.">get_program</a>(prog_name);
-<a name="l00508"></a>00508 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_sub"</span>);
-<a name="l00509"></a>00509 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_inf"</span>);
-<a name="l00510"></a>00510 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00511"></a>00511 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mult"</span>);
-<a name="l00512"></a>00512 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"swap"</span>);
-<a name="l00513"></a>00513 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00514"></a>00514 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_2"</span>);
-<a name="l00515"></a>00515 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sub"</span>);
-<a name="l00516"></a>00516 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00517"></a>00517 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"vmax"</span>);
-<a name="l00518"></a>00518 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inner_prod"</span>);
-<a name="l00519"></a>00519 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"add"</span>);
-<a name="l00520"></a>00520 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"plane_rotation"</span>);
-<a name="l00521"></a>00521 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00522"></a>00522 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00523"></a>00523 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_add"</span>);
-<a name="l00524"></a>00524 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_mult"</span>);
-<a name="l00525"></a>00525 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_divide"</span>);
-<a name="l00526"></a>00526 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00527"></a>00527 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00528"></a>00528 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_add"</span>);
-<a name="l00529"></a>00529 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"divide"</span>);
-<a name="l00530"></a>00530 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"norm_1"</span>);
-<a name="l00531"></a>00531 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"clear"</span>);
-<a name="l00532"></a>00532 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00533"></a>00533 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_mult"</span>);
-<a name="l00534"></a>00534 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"sum"</span>);
-<a name="l00535"></a>00535 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00536"></a>00536 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"diag_precond"</span>);
-<a name="l00537"></a>00537 prog_.<a class="code" href="classviennacl_1_1ocl_1_1program.html#a17bee920a38ba6e5158f5c807f88fd92" title="Adds a kernel to the program.">add_kernel</a>(<span class="stringliteral">"mul_sub"</span>);
-<a name="l00538"></a>00538 init_done[context_.<a class="code" href="classviennacl_1_1ocl_1_1context.html#a04a2acfc068529af42d1772382a20b90" title="Returns the context handle.">handle</a>()] = <span class="keyword">true</span>;
-<a name="l00539"></a>00539 } <span class="comment">//if</span>
-<a name="l00540"></a>00540 } <span class="comment">//init</span>
-<a name="l00541"></a>00541 }; <span class="comment">// struct</span>
-<a name="l00542"></a>00542
-<a name="l00543"></a>00543
-<a name="l00544"></a>00544 } <span class="comment">//namespace kernels</span>
-<a name="l00545"></a>00545 } <span class="comment">//namespace linalg</span>
-<a name="l00546"></a>00546 } <span class="comment">//namespace viennacl</span>
-<a name="l00547"></a>00547 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__operations_8hpp.html b/doc/doxygen/html/vector__operations_8hpp.html
deleted file mode 100644
index 2739f6b..0000000
--- a/doc/doxygen/html/vector__operations_8hpp.html
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#func-members">Functions</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p>Implementations of vector operations.
-<a href="#_details">More...</a></p>
-<code>#include "<a class="el" href="forwards_8h_source.html">viennacl/forwards.h</a>"</code><br/>
-<code>#include "<a class="el" href="device_8hpp_source.html">viennacl/ocl/device.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="handle_8hpp_source.html">viennacl/ocl/handle.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="kernel_8hpp_source.html">viennacl/ocl/kernel.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="scalar_8hpp_source.html">viennacl/scalar.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="tools_8hpp_source.html">viennacl/tools/tools.hpp</a>"</code><br/>
-<code>#include "<a class="el" href="vector__kernels_8h_source.html">viennacl/linalg/kernels/vector_kernels.h</a>"</code><br/>
-
-<p><a href="vector__operations_8hpp_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td colspan="2"><h2><a name="func-members"></a>
-Functions</h2></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9ea1aff45c0fb10d62801c9c25c8831e">add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a9ea1aff45c0fb10d62801c9c25c8831e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aca5f0d1977c4cd4e70cc6af6c91fce86">inplace_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aca5f0d1977c4cd4e70cc6af6c91fce86"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aad5f201a0e90a230b4376deb311c019a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">inplace_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a04b2c67e5839525ba813da61fde893ab"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#acae4aaa06516b42063bd44c12e5d56d0"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7cefe6d56ec8672118ff744eac103cae">mult</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a7cefe6d56ec8672118ff744eac103cae"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#affe330e509b142a9db9004f6a67c4183">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#affe330e509b142a9db9004f6a67c4183"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2aa5a5587eeadc46ce37159c0429f13e">inplace_mult</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a2aa5a5587eeadc46ce37159c0429f13e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">divide</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a0acf4875161f1193bcda16d33a66ce61"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a9dfce56da8c2b9d901800b205fb6b2e2">inplace_divide</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a9dfce56da8c2b9d901800b205fb6b2e2"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a6047863f8fb097162ffad8b1b847d1df"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a136d1799060f2adc907c8b67371a4134">mul_add</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, SCALARTYPE alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a136d1799060f2adc907c8b67371a4134"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a7fadfccd4d7dd18f74cbe448302236e7"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aaa53a9e3743e89dd87f5e77d28621a52">inplace_mul_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aaa53a9e3743e89dd87f5e77d28621a52"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">mul_sub</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, scalar< SCALARTYPE > const &alpha, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#a0bf813502bb4d25ab2613f1575a4fca3"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">inplace_mul_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#ab2cf15c4dcf00b57cf6342492ab8ea8e"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">inplace_div_add</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#abbe5a4f98fb91f55c405aa857af71d83"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">inplace_div_sub</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > const &alpha)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved. <a href="#aad1b78ccd178079d1c3c503b6810dd21"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2). <a href="#afc191e1a26f0c0037e320a3b7dc831cc"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT1, unsigned int ALIGNMENT2> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classviennacl_1_1scalar__expression.html">viennacl::scalar_expression</a><br class="typebreak"/>
-< const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT1 ><br class="typebreak"/>
-, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a><br class="typebreak"/>
-< SCALARTYPE, ALIGNMENT2 ><br class="typebreak"/>
-, viennacl::op_inner_prod > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">inner_prod_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT1 > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT2 > &vec2)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the inner product of two vectors. <a href="#a23fbff833bbc632131b761e732bce72b"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">norm_1_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^1-norm of a vector. <a href="#a2479f0743a32118e916cca8edb895c30"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">norm_2_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the l^2-norm of a vector - implementation. <a href="#a96a2ee028641ffd7b80e6a1bfad34c6a"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">norm_inf_impl</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec, scalar< SCALARTYPE > &result)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the supremum-norm of a vector. <a href="#a43009c5365c78c81463f54c2848378ca"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">cl_uint </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">index_norm_inf</a> (const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vcl_vec)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes the index of the first entry that is equal to the supremum-norm in modulus. <a href="#ad87b9ecda483a69e5d5eed36928840da"></a><br/></td></tr>
-<tr><td class="memTemplParams" colspan="2">template<class SCALARTYPE , unsigned int ALIGNMENT> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">plane_rotation</a> (<a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec1, const <a class="el" href="classviennacl_1_1vector.html">viennacl::vector</a>< SCALARTYPE, ALIGNMENT > &vec2, SCALARTYPE alpha, SCALARTYPE beta)</td></tr>
-<tr><td class="mdescLeft"> </td><td class="mdescRight">Computes a plane rotation of two vectors. <a href="#a38eb0d2bea8cb4a78253c9fe329000a9"></a><br/></td></tr>
-</table>
-<hr/><a name="_details"></a><h2>Detailed Description</h2>
-<p>Implementations of vector operations. </p>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__operations_8hpp_source.html b/doc/doxygen/html/vector__operations_8hpp_source.html
deleted file mode 100644
index 52db276..0000000
--- a/doc/doxygen/html/vector__operations_8hpp_source.html
+++ /dev/null
@@ -1,508 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/vector_operations.hpp</h1> </div>
-</div>
-<div class="contents">
-<a href="vector__operations_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* =======================================================================</span>
-<a name="l00002"></a>00002 <span class="comment"> Copyright (c) 2010, Institute for Microelectronics, TU Vienna.</span>
-<a name="l00003"></a>00003 <span class="comment"> http://www.iue.tuwien.ac.at</span>
-<a name="l00004"></a>00004 <span class="comment"> -----------------</span>
-<a name="l00005"></a>00005 <span class="comment"> ViennaCL - The Vienna Computing Library</span>
-<a name="l00006"></a>00006 <span class="comment"> -----------------</span>
-<a name="l00007"></a>00007 <span class="comment"> </span>
-<a name="l00008"></a>00008 <span class="comment"> authors: Karl Rupp rupp at iue.tuwien.ac.at</span>
-<a name="l00009"></a>00009 <span class="comment"> Florian Rudolf flo.rudy+viennacl at gmail.com</span>
-<a name="l00010"></a>00010 <span class="comment"> Josef Weinbub weinbub at iue.tuwien.ac.at</span>
-<a name="l00011"></a>00011 <span class="comment"></span>
-<a name="l00012"></a>00012 <span class="comment"> license: MIT (X11), see file LICENSE in the ViennaCL base directory</span>
-<a name="l00013"></a>00013 <span class="comment">======================================================================= */</span>
-<a name="l00014"></a>00014
-<a name="l00015"></a>00015 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_OPERATIONS_HPP_</span>
-<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_OPERATIONS_HPP_</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="forwards_8h.html" title="This file provides the forward declarations for the main types used within ViennaCL.">viennacl/forwards.h</a>"</span>
-<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="device_8hpp.html" title="Represents an OpenCL device within ViennaCL.">viennacl/ocl/device.hpp</a>"</span>
-<a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="handle_8hpp.html">viennacl/ocl/handle.hpp</a>"</span>
-<a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="kernel_8hpp.html" title="Representation of an OpenCL kernel in ViennaCL.">viennacl/ocl/kernel.hpp</a>"</span>
-<a name="l00026"></a>00026 <span class="preprocessor">#include "<a class="code" href="scalar_8hpp.html" title="Implementation of the ViennaCL scalar class.">viennacl/scalar.hpp</a>"</span>
-<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="tools_8hpp.html" title="Various little tools used here and there in ViennaCL.">viennacl/tools/tools.hpp</a>"</span>
-<a name="l00028"></a>00028 <span class="preprocessor">#include "<a class="code" href="vector__kernels_8h.html">viennacl/linalg/kernels/vector_kernels.h</a>"</span>
-<a name="l00029"></a>00029
-<a name="l00030"></a>00030 <span class="keyword">namespace </span>viennacl
-<a name="l00031"></a>00031 {
-<a name="l00032"></a>00032 <span class="keyword">namespace </span>linalg
-<a name="l00033"></a>00033 {
-<a name="l00040"></a>00040 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00041"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9ea1aff45c0fb10d62801c9c25c8831e">00041</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2777d6a19ce110ae9df6609f1677be0f" title="Adds two dense matrices and writes the result to a third matrix.">add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00042"></a>00042 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00043"></a>00043 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00044"></a>00044 {
-<a name="l00045"></a>00045 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00048"></a>00048 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"add"</span>);
-<a name="l00049"></a>00049
-<a name="l00050"></a>00050 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, result, size));
-<a name="l00051"></a>00051 }
-<a name="l00052"></a>00052
-<a name="l00060"></a>00060 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00061"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aca5f0d1977c4cd4e70cc6af6c91fce86">00061</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a225d1c31fb7c1dac9f5b94f17ae1f950" title="Adds a dense matrix to another.">inplace_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00062"></a>00062 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00065"></a>00065 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00066"></a>00066 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_add"</span>);
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, size));
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070
-<a name="l00079"></a>00079 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00080"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aad5f201a0e90a230b4376deb311c019a">00080</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a707ace72b7ff8ad1e3a9ff2606567f1e" title="Adds two dense matrices and writes the result to a third matrix.">sub</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00081"></a>00081 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00082"></a>00082 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00083"></a>00083 {
-<a name="l00084"></a>00084 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00085"></a>00085 result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00086"></a>00086 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00087"></a>00087 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sub"</span>);
-<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, result, size));
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091
-<a name="l00099"></a>00099 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00100"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a04b2c67e5839525ba813da61fde893ab">00100</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ae88903a9ae8dbc3fc47db7f37da326a6" title="Adds a dense matrix to another.">inplace_sub</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00101"></a>00101 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2)
-<a name="l00102"></a>00102 {
-<a name="l00103"></a>00103 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00104"></a>00104 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00105"></a>00105 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_sub"</span>);
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, size));
-<a name="l00108"></a>00108 }
-<a name="l00109"></a>00109
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 <span class="comment">//result = vec * scalar</span>
-<a name="l00120"></a>00120 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00121"></a><a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0">00121</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">mult</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00122"></a>00122 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00123"></a>00123 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00124"></a>00124 {
-<a name="l00125"></a>00125 result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00126"></a>00126 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"mult"</span>);
-<a name="l00127"></a>00127
-<a name="l00128"></a>00128 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, result, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l00129"></a>00129 }
-<a name="l00130"></a>00130
-<a name="l00139"></a>00139 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00140"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7cefe6d56ec8672118ff744eac103cae">00140</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#acae4aaa06516b42063bd44c12e5d56d0" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">mult</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00141"></a>00141 SCALARTYPE alpha,
-<a name="l00142"></a>00142 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00143"></a>00143 {
-<a name="l00144"></a>00144 result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00145"></a>00145 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_mult"</span>);
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, result, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149
-<a name="l00157"></a>00157 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00158"></a><a class="code" href="namespaceviennacl_1_1linalg.html#affe330e509b142a9db9004f6a67c4183">00158</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00159"></a>00159 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00160"></a>00160 {
-<a name="l00161"></a>00161 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_mult"</span>);
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l00164"></a>00164 }
-<a name="l00165"></a>00165
-<a name="l00173"></a>00173 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00174"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2aa5a5587eeadc46ce37159c0429f13e">00174</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0e4c7521b309670969d542805ac87b35" title="Multiplies a dense matrix by a scalar.">inplace_mult</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00175"></a>00175 SCALARTYPE alpha)
-<a name="l00176"></a>00176 {
-<a name="l00177"></a>00177 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_inplace_mult"</span>);
-<a name="l00178"></a>00178
-<a name="l00179"></a>00179 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181
-<a name="l00182"></a>00182 <span class="comment">//result = vec / scalar</span>
-<a name="l00191"></a>00191 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00192"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61">00192</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0acf4875161f1193bcda16d33a66ce61" title="Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune...">divide</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00193"></a>00193 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00194"></a>00194 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00195"></a>00195 {
-<a name="l00196"></a>00196 assert(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00197"></a>00197 result.<a class="code" href="classviennacl_1_1vector.html#ac3afd1fbe76f7fed3e2b36b1297fa42c" title="Resizes the allocated memory for the vector. Pads the memory to be a multiple of 'ALIGNMENT'...">resize</a>(vec.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00198"></a>00198 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"divide"</span>);
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, result, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202
-<a name="l00210"></a>00210 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00211"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a9dfce56da8c2b9d901800b205fb6b2e2">00211</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6e86b6169a6ff7495734d3eef5d4fd33" title="Multiplies a dense matrix by a scalar.">inplace_divide</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & <a class="code" href="namespaceviennacl_1_1io_1_1val.html#a80ef617bc6b5ed136631df552c86911c">vec</a>,
-<a name="l00212"></a>00212 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00213"></a>00213 {
-<a name="l00214"></a>00214 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_divide"</span>);
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec, alpha, static_cast<cl_uint>(vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>())));
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 <span class="comment">//result = factor * vec1 + vec2</span>
-<a name="l00229"></a>00229 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00230"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df">00230</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">mul_add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00231"></a>00231 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00232"></a>00232 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00233"></a>00233 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00234"></a>00234 {
-<a name="l00235"></a>00235 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00236"></a>00236 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"mul_add"</span>);
-<a name="l00237"></a>00237 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00238"></a>00238
-<a name="l00239"></a>00239 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, alpha, vec2, result, size));
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241
-<a name="l00251"></a>00251 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00252"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a136d1799060f2adc907c8b67371a4134">00252</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a6047863f8fb097162ffad8b1b847d1df" title="Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fi...">mul_add</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00253"></a>00253 SCALARTYPE alpha,
-<a name="l00254"></a>00254 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00255"></a>00255 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00256"></a>00256 {
-<a name="l00257"></a>00257 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00258"></a>00258 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_mul_add"</span>);
-<a name="l00259"></a>00259 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00260"></a>00260
-<a name="l00261"></a>00261 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, alpha, vec2, result, size));
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263
-<a name="l00264"></a>00264 <span class="comment">//vec1 += factor * vec2</span>
-<a name="l00273"></a>00273 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00274"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7">00274</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">inplace_mul_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00275"></a>00275 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00276"></a>00276 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00277"></a>00277 {
-<a name="l00278"></a>00278 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00279"></a>00279 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00280"></a>00280 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_mul_add"</span>);
-<a name="l00281"></a>00281
-<a name="l00282"></a>00282 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284
-<a name="l00293"></a>00293 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00294"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aaa53a9e3743e89dd87f5e77d28621a52">00294</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a7fadfccd4d7dd18f74cbe448302236e7" title="Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">inplace_mul_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00295"></a>00295 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00296"></a>00296 SCALARTYPE alpha)
-<a name="l00297"></a>00297 {
-<a name="l00298"></a>00298 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00299"></a>00299 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"cpu_inplace_mul_add"</span>);
-<a name="l00300"></a>00300 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00301"></a>00301
-<a name="l00302"></a>00302 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));
-<a name="l00303"></a>00303 }
-<a name="l00304"></a>00304
-<a name="l00314"></a>00314 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00315"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3">00315</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a0bf813502bb4d25ab2613f1575a4fca3" title="Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">mul_sub</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00316"></a>00316 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha,
-<a name="l00317"></a>00317 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00318"></a>00318 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & result)
-<a name="l00319"></a>00319 {
-<a name="l00320"></a>00320 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() && result.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00321"></a>00321 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"mul_sub"</span>);
-<a name="l00322"></a>00322 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00323"></a>00323
-<a name="l00324"></a>00324 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, alpha, vec2, result, size));
-<a name="l00325"></a>00325 }
-<a name="l00326"></a>00326
-<a name="l00327"></a>00327
-<a name="l00336"></a>00336 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00337"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e">00337</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#ab2cf15c4dcf00b57cf6342492ab8ea8e" title="Inplace Multiply-subtract operation. Try to use the overloaded operators for vector instead...">inplace_mul_sub</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00338"></a>00338 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00339"></a>00339 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00340"></a>00340 {
-<a name="l00341"></a>00341 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00342"></a>00342 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_mul_sub"</span>);
-<a name="l00343"></a>00343 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00344"></a>00344
-<a name="l00345"></a>00345 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));
-<a name="l00346"></a>00346 }
-<a name="l00347"></a>00347
-<a name="l00356"></a>00356 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00357"></a><a class="code" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83">00357</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#abbe5a4f98fb91f55c405aa857af71d83" title="Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.">inplace_div_add</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00358"></a>00358 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00359"></a>00359 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00360"></a>00360 {
-<a name="l00361"></a>00361 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00362"></a>00362 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_div_add"</span>);
-<a name="l00363"></a>00363 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00364"></a>00364
-<a name="l00365"></a>00365 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));
-<a name="l00366"></a>00366 }
-<a name="l00367"></a>00367
-<a name="l00376"></a>00376 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00377"></a><a class="code" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21">00377</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#aad1b78ccd178079d1c3c503b6810dd21" title="Inplace divide-subtract operation. Try to use the overloaded operators for vector instead...">inplace_div_sub</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00378"></a>00378 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00379"></a>00379 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> <span class="keyword">const</span> & alpha)
-<a name="l00380"></a>00380 {
-<a name="l00381"></a>00381 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00382"></a>00382 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inplace_div_sub"</span>);
-<a name="l00383"></a>00383 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00384"></a>00384
-<a name="l00385"></a>00385 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, size));
-<a name="l00386"></a>00386 }
-<a name="l00387"></a>00387
-<a name="l00388"></a>00388
-<a name="l00390"></a>00390
-<a name="l00391"></a>00391
-<a name="l00392"></a>00392 <span class="comment">//implementation of inner product:</span>
-<a name="l00393"></a>00393 <span class="comment">//namespace {</span>
-<a name="l00400"></a>00400 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00401"></a><a class="code" href="namespaceviennacl_1_1linalg.html#afc191e1a26f0c0037e320a3b7dc831cc">00401</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00402"></a>00402 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00403"></a>00403 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00404"></a>00404 {
-<a name="l00405"></a>00405 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00406"></a>00406 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"inner_prod"</span>);
-<a name="l00407"></a>00407 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(std::min(vec1.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>(), vec2.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>()));
-<a name="l00408"></a>00408 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.global_work_size() / k.local_work_size();
-<a name="l00409"></a>00409 <span class="keyword">static</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00410"></a>00410
-<a name="l00411"></a>00411 <span class="comment">/*unsigned int pos = 0;</span>
-<a name="l00412"></a>00412 <span class="comment"> k.argument(pos++, vec1.handle());</span>
-<a name="l00413"></a>00413 <span class="comment"> k.argument(pos++, vec2.handle());</span>
-<a name="l00414"></a>00414 <span class="comment"> k.argument(pos++, size);</span>
-<a name="l00415"></a>00415 <span class="comment"> k.local_buffer(pos++, static_cast<unsigned int>(sizeof(SCALARTYPE) * k.local_work_size()));</span>
-<a name="l00416"></a>00416 <span class="comment"> k.argument(pos++, temp.handle());*/</span>
-<a name="l00417"></a>00417
-<a name="l00418"></a>00418 <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00419"></a>00419 <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00420"></a>00420 assert( work_groups * k.local_work_size() == k.global_work_size() );
-<a name="l00421"></a>00421 assert( (k.global_work_size() / k.local_work_size()) == 1
-<a name="l00422"></a>00422 || (k.global_work_size() / k.local_work_size()) == 2
-<a name="l00423"></a>00423 || (k.global_work_size() / k.local_work_size()) == 4
-<a name="l00424"></a>00424 || (k.global_work_size() / k.local_work_size()) == 8
-<a name="l00425"></a>00425 || (k.global_work_size() / k.local_work_size()) == 16
-<a name="l00426"></a>00426 || (k.global_work_size() / k.local_work_size()) == 32
-<a name="l00427"></a>00427 || (k.global_work_size() / k.local_work_size()) == 64
-<a name="l00428"></a>00428 || (k.global_work_size() / k.local_work_size()) == 128
-<a name="l00429"></a>00429 || (k.global_work_size() / k.local_work_size()) == 256
-<a name="l00430"></a>00430 || (k.global_work_size() / k.local_work_size()) == 512 );
-<a name="l00431"></a>00431
-<a name="l00432"></a>00432 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.local_work_size()), temp));
-<a name="l00433"></a>00433
-<a name="l00434"></a>00434 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & ksum = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sum"</span>);
-<a name="l00435"></a>00435
-<a name="l00436"></a>00436 ksum.local_work_size(0, work_groups);
-<a name="l00437"></a>00437 ksum.global_work_size(0, work_groups);
-<a name="l00438"></a>00438 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(ksum(temp, result));
-<a name="l00439"></a>00439 }
-<a name="l00440"></a>00440 <span class="comment">//}</span>
-<a name="l00441"></a>00441
-<a name="l00442"></a>00442 <span class="comment">//public interface of inner product</span>
-<a name="l00449"></a>00449 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT1, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT2>
-<a name="l00450"></a>00450 <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1></a>,
-<a name="l00451"></a>00451 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a>,
-<a name="l00452"></a>00452 viennacl::op_inner_prod >
-<a name="l00453"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b">00453</a> <a class="code" href="namespaceviennacl_1_1linalg.html#a23fbff833bbc632131b761e732bce72b" title="Computes the inner product of two vectors.">inner_prod_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT1></a> & vec1,
-<a name="l00454"></a>00454 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a> & vec2)
-<a name="l00455"></a>00455 {
-<a name="l00456"></a>00456 <span class="keywordflow">return</span> <a class="code" href="classviennacl_1_1scalar__expression.html" title="A proxy for scalar expressions (e.g. from inner vector products).">viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1></a>,
-<a name="l00457"></a>00457 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT2></a>,
-<a name="l00458"></a>00458 viennacl::op_inner_prod >(vec1, vec2);
-<a name="l00459"></a>00459 }
-<a name="l00460"></a>00460
-<a name="l00461"></a>00461
-<a name="l00462"></a>00462
-<a name="l00468"></a>00468 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00469"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30">00469</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a2479f0743a32118e916cca8edb895c30" title="Computes the l^1-norm of a vector.">norm_1_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00470"></a>00470 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00471"></a>00471 {
-<a name="l00472"></a>00472 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"norm_1"</span>);
-<a name="l00473"></a>00473 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00474"></a>00474
-<a name="l00475"></a>00475 <span class="keywordflow">if</span> (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() != k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>())
-<a name="l00476"></a>00476 {
-<a name="l00477"></a>00477 <span class="comment">//NOTE: For some reasons the kernel could not be started with several work groups on NVIDIA hardware. This forces us to use as many parallel threads within a single work group as possible</span>
-<a name="l00478"></a>00478 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00479"></a>00479 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00480"></a>00480 }
-<a name="l00481"></a>00481
-<a name="l00482"></a>00482
-<a name="l00483"></a>00483 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00484"></a>00484 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00485"></a>00485
-<a name="l00486"></a>00486 <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00487"></a>00487 <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00488"></a>00488 assert( work_groups * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() == k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() );
-<a name="l00489"></a>00489 assert( (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 1
-<a name="l00490"></a>00490 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 2
-<a name="l00491"></a>00491 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 4
-<a name="l00492"></a>00492 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 8
-<a name="l00493"></a>00493 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 16
-<a name="l00494"></a>00494 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 32
-<a name="l00495"></a>00495 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 64
-<a name="l00496"></a>00496 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 128
-<a name="l00497"></a>00497 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 256
-<a name="l00498"></a>00498 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 512 );
-<a name="l00499"></a>00499
-<a name="l00500"></a>00500 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), temp));
-<a name="l00501"></a>00501
-<a name="l00502"></a>00502 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & ksum = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sum"</span>);
-<a name="l00503"></a>00503
-<a name="l00504"></a>00504 ksum.local_work_size(0, work_groups);
-<a name="l00505"></a>00505 ksum.global_work_size(0, work_groups);
-<a name="l00506"></a>00506 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(ksum(temp, result));
-<a name="l00507"></a>00507 }
-<a name="l00508"></a>00508
-<a name="l00514"></a>00514 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00515"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a">00515</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a96a2ee028641ffd7b80e6a1bfad34c6a" title="Computes the l^2-norm of a vector - implementation.">norm_2_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00516"></a>00516 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00517"></a>00517 {
-<a name="l00518"></a>00518 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"norm_2"</span>);
-<a name="l00519"></a>00519 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00520"></a>00520
-<a name="l00521"></a>00521 <span class="keywordflow">if</span> (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() != k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>())
-<a name="l00522"></a>00522 {
-<a name="l00523"></a>00523 <span class="comment">//NOTE: For some reasons the kernel could not be started with several work groups on NVIDIA hardware. This forces us to use as many parallel threads within a single work group as possible</span>
-<a name="l00524"></a>00524 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00525"></a>00525 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00526"></a>00526 }
-<a name="l00527"></a>00527
-<a name="l00528"></a>00528 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00529"></a>00529 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00530"></a>00530
-<a name="l00531"></a>00531 <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00532"></a>00532 <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00533"></a>00533 assert( work_groups * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() == k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() );
-<a name="l00534"></a>00534 assert( (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 1
-<a name="l00535"></a>00535 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 2
-<a name="l00536"></a>00536 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 4
-<a name="l00537"></a>00537 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 8
-<a name="l00538"></a>00538 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 16
-<a name="l00539"></a>00539 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 32
-<a name="l00540"></a>00540 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 64
-<a name="l00541"></a>00541 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 128
-<a name="l00542"></a>00542 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 256
-<a name="l00543"></a>00543 || (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()) == 512 );
-<a name="l00544"></a>00544
-<a name="l00545"></a>00545 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), temp));
-<a name="l00546"></a>00546
-<a name="l00547"></a>00547 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & sqrt_sum = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"sqrt_sum"</span>);
-<a name="l00548"></a>00548
-<a name="l00549"></a>00549 sqrt_sum.local_work_size(0, work_groups);
-<a name="l00550"></a>00550 sqrt_sum.global_work_size(0, work_groups);
-<a name="l00551"></a>00551 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(sqrt_sum(temp, result, work_groups));
-<a name="l00552"></a>00552 }
-<a name="l00553"></a>00553
-<a name="l00559"></a>00559 <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00560"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca">00560</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a43009c5365c78c81463f54c2848378ca" title="Computes the supremum-norm of a vector.">norm_inf_impl</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec,
-<a name="l00561"></a>00561 <a class="code" href="classviennacl_1_1scalar.html" title="This class represents a single scalar value on the GPU and behaves mostly like a built-in scalar type...">scalar<SCALARTYPE></a> & result)
-<a name="l00562"></a>00562 {
-<a name="l00563"></a>00563 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00564"></a>00564 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"norm_inf"</span>);
-<a name="l00565"></a>00565
-<a name="l00566"></a>00566 <span class="keywordflow">if</span> (k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() != k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>())
-<a name="l00567"></a>00567 {
-<a name="l00568"></a>00568 <span class="comment">//NOTE: For some reasons the kernel could not be started with several work groups on NVIDIA hardware. This forces us to use as many parallel threads within a single work group as possible</span>
-<a name="l00569"></a>00569 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00570"></a>00570 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, <a class="code" href="namespaceviennacl_1_1ocl.html#a31b4bfa886efdae7ada1c0c5f2591ed5" title="Convenience function for returning the active device in the current context.">viennacl::ocl::current_device</a>().max_work_group_size());
-<a name="l00571"></a>00571 }
-<a name="l00572"></a>00572
-<a name="l00573"></a>00573 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> work_groups = k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() / k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>();
-<a name="l00574"></a>00574 <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE></a> temp(work_groups);
-<a name="l00575"></a>00575
-<a name="l00576"></a>00576 <span class="comment">//Note: Number of work groups MUST be a power of two!</span>
-<a name="l00577"></a>00577 <span class="comment">//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;</span>
-<a name="l00578"></a>00578 assert( work_groups * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>() == k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>() );
-<a name="l00579"></a>00579 assert( work_groups == 1
-<a name="l00580"></a>00580 || work_groups == 2
-<a name="l00581"></a>00581 || work_groups == 4
-<a name="l00582"></a>00582 || work_groups == 8
-<a name="l00583"></a>00583 || work_groups == 16
-<a name="l00584"></a>00584 || work_groups == 32
-<a name="l00585"></a>00585 || work_groups == 64
-<a name="l00586"></a>00586 || work_groups == 128
-<a name="l00587"></a>00587 || work_groups == 256
-<a name="l00588"></a>00588 || work_groups == 512 );
-<a name="l00589"></a>00589
-<a name="l00590"></a>00590 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec, size, <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), temp));
-<a name="l00591"></a>00591 <span class="comment">//viennacl::ocl::get_queue().finish();</span>
-<a name="l00592"></a>00592
-<a name="l00593"></a>00593 <span class="comment">//part 2: parallel reduction of reduced kernel:</span>
-<a name="l00594"></a>00594 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & max_kernel = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"vmax"</span>);
-<a name="l00595"></a>00595 max_kernel.local_work_size(0, work_groups);
-<a name="l00596"></a>00596 max_kernel.global_work_size(0, work_groups);
-<a name="l00597"></a>00597
-<a name="l00598"></a>00598 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(max_kernel(temp, result, work_groups));
-<a name="l00599"></a>00599 }
-<a name="l00600"></a>00600
-<a name="l00601"></a>00601 <span class="comment">//This function should return a CPU scalar, otherwise statements like </span>
-<a name="l00602"></a>00602 <span class="comment">// vcl_rhs[index_norm_inf(vcl_rhs)] </span>
-<a name="l00603"></a>00603 <span class="comment">// are ambiguous</span>
-<a name="l00609"></a>00609 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00610"></a><a class="code" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da">00610</a> cl_uint <a class="code" href="namespaceviennacl_1_1linalg.html#ad87b9ecda483a69e5d5eed36928840da" title="Computes the index of the first entry that is equal to the supremum-norm in modulus.">index_norm_inf</a>(<span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vcl_vec)
-<a name="l00611"></a>00611 {
-<a name="l00612"></a>00612 <a class="code" href="classviennacl_1_1ocl_1_1handle.html">viennacl::ocl::handle<cl_mem></a> h = <a class="code" href="namespaceviennacl_1_1ocl.html#a0c2a174533a0aca403ff7c4aa802edcf" title="Convenience function for returning the current context.">viennacl::ocl::current_context</a>().<a class="code" href="classviennacl_1_1ocl_1_1context.html#a22299eef7ac0c36ba322a2bb25e953c5" title="Creates a memory buffer within the context.">create_memory</a>(CL_MEM_READ_WRITE, <span class="keyword">sizeof</span>(cl_uint));
-<a name="l00613"></a>00613
-<a name="l00614"></a>00614 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"index_norm_inf"</span>);
-<a name="l00615"></a>00615 cl_uint <a class="code" href="namespaceviennacl_1_1tools_1_1traits.html#ab56a8d68c5b23bac1e41386447e29c5f">size</a> = <span class="keyword">static_cast<</span>cl_uint<span class="keyword">></span>(vcl_vec.<a class="code" href="classviennacl_1_1vector.html#aa50eb28af8d336f420b4de7b67ce738c" title="Returns the internal length of the vector, which is given by size() plus the extra memory due to padd...">internal_size</a>());
-<a name="l00616"></a>00616
-<a name="l00617"></a>00617 k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a710fa875ddd200587a615a54e56ac456" title="Returns the global work size at the respective dimension.">global_work_size</a>(0, k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>());
-<a name="l00618"></a>00618 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vcl_vec,
-<a name="l00619"></a>00619 size,
-<a name="l00620"></a>00620 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(SCALARTYPE) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()),
-<a name="l00621"></a>00621 <a class="code" href="classviennacl_1_1ocl_1_1local__mem.html" title="A class representing local (shared) OpenCL memory. Typically used as kernel argument.">viennacl::ocl::local_mem</a>(<span class="keyword">sizeof</span>(cl_uint) * k.<a class="code" href="classviennacl_1_1ocl_1_1kernel.html#a42348d9e5c486ceb3001ddf6dcbe51b9" title="Returns the local work size at the respective dimension.">local_work_size</a>()), h));
-<a name="l00622"></a>00622
-<a name="l00623"></a>00623 <span class="comment">//read value:</span>
-<a name="l00624"></a>00624 cl_uint result;
-<a name="l00625"></a>00625 cl_int err;
-<a name="l00626"></a>00626 err = clEnqueueReadBuffer(<a class="code" href="namespaceviennacl_1_1ocl.html#ac7871671987d322a8766aea79b1cd17a" title="Convenience function for getting the default queue for the currently active device in the active cont...">viennacl::ocl::get_queue</a>().handle(), h, CL_TRUE, 0, <span class="keyword">sizeof</span>(cl_uint), &result, 0, NULL, NULL);
-<a name="l00627"></a>00627 <a class="code" href="error_8hpp.html#a44f070f54255e72eb40c75ebd72ea602">VIENNACL_ERR_CHECK</a>(err);
-<a name="l00628"></a>00628 <span class="keywordflow">return</span> result;
-<a name="l00629"></a>00629 }
-<a name="l00630"></a>00630
-<a name="l00631"></a>00631 <span class="comment">//TODO: Special case vec1 == vec2 allows improvement!!</span>
-<a name="l00641"></a>00641 <span class="comment"></span> <span class="keyword">template</span><<span class="keyword">class</span> SCALARTYPE, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ALIGNMENT>
-<a name="l00642"></a><a class="code" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9">00642</a> <span class="keywordtype">void</span> <a class="code" href="namespaceviennacl_1_1linalg.html#a38eb0d2bea8cb4a78253c9fe329000a9" title="Computes a plane rotation of two vectors.">plane_rotation</a>(<a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec1,
-<a name="l00643"></a>00643 <span class="keyword">const</span> <a class="code" href="classviennacl_1_1vector.html" title="A vector class representing a linear memory sequence on the GPU. Inspired by boost::numeric::ublas::v...">viennacl::vector<SCALARTYPE, ALIGNMENT></a> & vec2,
-<a name="l00644"></a>00644 SCALARTYPE alpha,
-<a name="l00645"></a>00645 SCALARTYPE beta)
-<a name="l00646"></a>00646 {
-<a name="l00647"></a>00647 assert(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>() == vec2.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>());
-<a name="l00648"></a>00648 <a class="code" href="classviennacl_1_1ocl_1_1kernel.html" title="Represents an OpenCL kernel within ViennaCL.">viennacl::ocl::kernel</a> & k = <a class="code" href="namespaceviennacl_1_1ocl.html#a61a73653d92f1eb2ef9c649ec253e29f" title="Convenience function for getting the kernel for a particular program from the current active context...">viennacl::ocl::get_kernel</a>(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), <span class="stringliteral">"plane_rotation"</span>);
-<a name="l00649"></a>00649
-<a name="l00650"></a>00650 <a class="code" href="namespaceviennacl_1_1ocl.html#a46527eb5023de820b1f1c16ec5a11084" title="Enqueues a kernel in the provided queue.">viennacl::ocl::enqueue</a>(k(vec1, vec2, alpha, beta, static_cast<cl_uint>(vec1.<a class="code" href="classviennacl_1_1vector.html#a503ab01f6c0142145d3434f6924714e7" title="Returns the length of the vector (cf. std::vector).">size</a>())));
-<a name="l00651"></a>00651 }
-<a name="l00652"></a>00652
-<a name="l00653"></a>00653 } <span class="comment">//namespace linalg</span>
-<a name="l00654"></a>00654 } <span class="comment">//namespace viennacl</span>
-<a name="l00655"></a>00655
-<a name="l00656"></a>00656
-<a name="l00657"></a>00657 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__source_8h.html b/doc/doxygen/html/vector__source_8h.html
deleted file mode 100644
index 89bdb71..0000000
--- a/doc/doxygen/html/vector__source_8h.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-</div>
-<div class="header">
- <div class="summary">
-<a href="#namespaces">Namespaces</a> |
-<a href="#var-members">Variables</a> </div>
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h File Reference</h1> </div>
-</div>
-<div class="contents">
-
-<p><a href="vector__source_8h_source.html">Go to the source code of this file.</a></p>
-<table class="memberdecls">
-<tr><td colspan="2"><h2><a name="namespaces"></a>
-Namespaces</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl.html">viennacl</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg.html">viennacl::linalg</a></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html">viennacl::linalg::kernels</a></td></tr>
-<tr><td colspan="2"><h2><a name="var-members"></a>
-Variables</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> = " \n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> = "\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> = "}\n"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">const char *const </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> = "}\n"</td></tr>
-</table>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:51 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/doxygen/html/vector__source_8h_source.html b/doc/doxygen/html/vector__source_8h_source.html
deleted file mode 100644
index 5cf1515..0000000
--- a/doc/doxygen/html/vector__source_8h_source.html
+++ /dev/null
@@ -1,870 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>ViennaCL - The Vienna Computing Library: /data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<!-- Generated by Doxygen 1.7.1 -->
-<div class="navigation" id="top">
- <div class="tabs">
- <ul class="tablist">
- <li><a href="index.html"><span>Main Page</span></a></li>
- <li><a href="namespaces.html"><span>Namespaces</span></a></li>
- <li><a href="annotated.html"><span>Data Structures</span></a></li>
- <li class="current"><a href="files.html"><span>Files</span></a></li>
- </ul>
- </div>
- <div class="tabs2">
- <ul class="tablist">
- <li><a href="files.html"><span>File List</span></a></li>
- <li><a href="globals.html"><span>Globals</span></a></li>
- </ul>
- </div>
-<div class="header">
- <div class="headertitle">
-<h1>/data/development/ViennaCL/ViennaCL-1.1.2/viennacl/linalg/kernels/vector_source.h</h1> </div>
-</div>
-<div class="contents">
-<a href="vector__source_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef _VIENNACL_VECTOR_SOURCE_HPP_</span>
-<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define _VIENNACL_VECTOR_SOURCE_HPP_</span>
-<a name="l00003"></a>00003 <span class="preprocessor"></span><span class="comment">//Automatically generated file from aux-directory, do not edit manually!</span>
-<a name="l00004"></a>00004 <span class="keyword">namespace </span>viennacl
-<a name="l00005"></a>00005 {
-<a name="l00006"></a>00006 <span class="keyword">namespace </span>linalg
-<a name="l00007"></a>00007 {
-<a name="l00008"></a>00008 <span class="keyword">namespace </span><a class="code" href="namespaceviennacl_1_1io_1_1tag.html#a92b94ec299d56ace592f942e43471a26">kernels</a>
-<a name="l00009"></a>00009 {
-<a name="l00010"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">00010</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2aa4d7333e4a406ce54bb08626cd0d0c">vector_align16_inplace_sub</a> =
-<a name="l00011"></a>00011 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00012"></a>00012 <span class="stringliteral">" __global float16 * vec1,\n"</span>
-<a name="l00013"></a>00013 <span class="stringliteral">" __global const float16 * vec2,\n"</span>
-<a name="l00014"></a>00014 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00015"></a>00015 <span class="stringliteral">"{ \n"</span>
-<a name="l00016"></a>00016 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00017"></a>00017 <span class="stringliteral">" vec1[i] -= vec2[i];\n"</span>
-<a name="l00018"></a>00018 <span class="stringliteral">"}\n"</span>
-<a name="l00019"></a>00019 ; <span class="comment">//vector_align16_inplace_sub</span>
-<a name="l00020"></a>00020
-<a name="l00021"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">00021</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a13d8a0dd51329a0a01306b83427d2bf1">vector_align16_mult</a> =
-<a name="l00022"></a>00022 <span class="stringliteral">"__kernel void mult(\n"</span>
-<a name="l00023"></a>00023 <span class="stringliteral">" __global const float16 * vec,\n"</span>
-<a name="l00024"></a>00024 <span class="stringliteral">" __global const float * fac, \n"</span>
-<a name="l00025"></a>00025 <span class="stringliteral">" __global float16 * result,\n"</span>
-<a name="l00026"></a>00026 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00027"></a>00027 <span class="stringliteral">"{ \n"</span>
-<a name="l00028"></a>00028 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00029"></a>00029 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00030"></a>00030 <span class="stringliteral">" result[i] = vec[i] * factor;\n"</span>
-<a name="l00031"></a>00031 <span class="stringliteral">"}\n"</span>
-<a name="l00032"></a>00032 ; <span class="comment">//vector_align16_mult</span>
-<a name="l00033"></a>00033
-<a name="l00034"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">00034</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a558efc15c32913225f8782d17e4bd263">vector_align16_sub</a> =
-<a name="l00035"></a>00035 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00036"></a>00036 <span class="stringliteral">" __global const float16 * vec1,\n"</span>
-<a name="l00037"></a>00037 <span class="stringliteral">" __global const float16 * vec2, \n"</span>
-<a name="l00038"></a>00038 <span class="stringliteral">" __global float16 * result,\n"</span>
-<a name="l00039"></a>00039 <span class="stringliteral">" unsigned int size)\n"</span>
-<a name="l00040"></a>00040 <span class="stringliteral">"{ \n"</span>
-<a name="l00041"></a>00041 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00042"></a>00042 <span class="stringliteral">" result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00043"></a>00043 <span class="stringliteral">"}\n"</span>
-<a name="l00044"></a>00044 ; <span class="comment">//vector_align16_sub</span>
-<a name="l00045"></a>00045
-<a name="l00046"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">00046</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a856ca9e5a1b846cf568a00bf382dd17c">vector_align16_cpu_inplace_mul</a> =
-<a name="l00047"></a>00047 <span class="stringliteral">"\n"</span>
-<a name="l00048"></a>00048 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00049"></a>00049 <span class="stringliteral">" __global float16 * vec,\n"</span>
-<a name="l00050"></a>00050 <span class="stringliteral">" float factor, \n"</span>
-<a name="l00051"></a>00051 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00052"></a>00052 <span class="stringliteral">"{ \n"</span>
-<a name="l00053"></a>00053 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00054"></a>00054 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00055"></a>00055 <span class="stringliteral">"}\n"</span>
-<a name="l00056"></a>00056 <span class="stringliteral">"\n"</span>
-<a name="l00057"></a>00057 ; <span class="comment">//vector_align16_cpu_inplace_mul</span>
-<a name="l00058"></a>00058
-<a name="l00059"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">00059</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aac17cc82a82c3995db312f66af135cdd">vector_align16_add</a> =
-<a name="l00060"></a>00060 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00061"></a>00061 <span class="stringliteral">" __global const float16 * vec1,\n"</span>
-<a name="l00062"></a>00062 <span class="stringliteral">" __global const float16 * vec2, \n"</span>
-<a name="l00063"></a>00063 <span class="stringliteral">" __global float16 * result,\n"</span>
-<a name="l00064"></a>00064 <span class="stringliteral">" unsigned int size)\n"</span>
-<a name="l00065"></a>00065 <span class="stringliteral">"{ \n"</span>
-<a name="l00066"></a>00066 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00067"></a>00067 <span class="stringliteral">" result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00068"></a>00068 <span class="stringliteral">"}\n"</span>
-<a name="l00069"></a>00069 ; <span class="comment">//vector_align16_add</span>
-<a name="l00070"></a>00070
-<a name="l00071"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">00071</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a871165366e49272cadf5577a72727adb">vector_align16_cpu_mult</a> =
-<a name="l00072"></a>00072 <span class="stringliteral">"__kernel void cpu_mult(\n"</span>
-<a name="l00073"></a>00073 <span class="stringliteral">" __global const float16 * vec,\n"</span>
-<a name="l00074"></a>00074 <span class="stringliteral">" float factor, \n"</span>
-<a name="l00075"></a>00075 <span class="stringliteral">" __global float16 * result,\n"</span>
-<a name="l00076"></a>00076 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00077"></a>00077 <span class="stringliteral">"{ \n"</span>
-<a name="l00078"></a>00078 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00079"></a>00079 <span class="stringliteral">" result[i] = vec[i] * factor;\n"</span>
-<a name="l00080"></a>00080 <span class="stringliteral">"}\n"</span>
-<a name="l00081"></a>00081 ; <span class="comment">//vector_align16_cpu_mult</span>
-<a name="l00082"></a>00082
-<a name="l00083"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">00083</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a36871c851eca44d6c80f48a75b26c9a1">vector_align16_inplace_divide</a> =
-<a name="l00084"></a>00084 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00085"></a>00085 <span class="stringliteral">" __global float16 * vec,\n"</span>
-<a name="l00086"></a>00086 <span class="stringliteral">" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00087"></a>00087 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00088"></a>00088 <span class="stringliteral">"{ \n"</span>
-<a name="l00089"></a>00089 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00090"></a>00090 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00091"></a>00091 <span class="stringliteral">" vec[i] /= factor;\n"</span>
-<a name="l00092"></a>00092 <span class="stringliteral">"}\n"</span>
-<a name="l00093"></a>00093 ; <span class="comment">//vector_align16_inplace_divide</span>
-<a name="l00094"></a>00094
-<a name="l00095"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">00095</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68974b111e7fea103a47da8bc394e027">vector_align16_inplace_add</a> =
-<a name="l00096"></a>00096 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00097"></a>00097 <span class="stringliteral">" __global float16 * vec1,\n"</span>
-<a name="l00098"></a>00098 <span class="stringliteral">" __global const float16 * vec2,\n"</span>
-<a name="l00099"></a>00099 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00100"></a>00100 <span class="stringliteral">"{ \n"</span>
-<a name="l00101"></a>00101 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00102"></a>00102 <span class="stringliteral">" vec1[i] += vec2[i];\n"</span>
-<a name="l00103"></a>00103 <span class="stringliteral">"}\n"</span>
-<a name="l00104"></a>00104 ; <span class="comment">//vector_align16_inplace_add</span>
-<a name="l00105"></a>00105
-<a name="l00106"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">00106</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aade9b99bbe8d0e90a0c4a085e5b2134f">vector_align16_divide</a> =
-<a name="l00107"></a>00107 <span class="stringliteral">"//Note: 'div' cannot be used because of complaints by the jit-compiler\n"</span>
-<a name="l00108"></a>00108 <span class="stringliteral">"__kernel void divide(\n"</span>
-<a name="l00109"></a>00109 <span class="stringliteral">" __global const float16 * vec,\n"</span>
-<a name="l00110"></a>00110 <span class="stringliteral">" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00111"></a>00111 <span class="stringliteral">" __global float16 * result,\n"</span>
-<a name="l00112"></a>00112 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00113"></a>00113 <span class="stringliteral">"{ \n"</span>
-<a name="l00114"></a>00114 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00115"></a>00115 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00116"></a>00116 <span class="stringliteral">" result[i] = vec[i] / factor;\n"</span>
-<a name="l00117"></a>00117 <span class="stringliteral">"}\n"</span>
-<a name="l00118"></a>00118 ; <span class="comment">//vector_align16_divide</span>
-<a name="l00119"></a>00119
-<a name="l00120"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">00120</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a409c99f8f615c4c0c46492c0ac23fca9">vector_align16_inplace_mult</a> =
-<a name="l00121"></a>00121 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00122"></a>00122 <span class="stringliteral">" __global float16 * vec,\n"</span>
-<a name="l00123"></a>00123 <span class="stringliteral">" __global const float * fac, \n"</span>
-<a name="l00124"></a>00124 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00125"></a>00125 <span class="stringliteral">"{ \n"</span>
-<a name="l00126"></a>00126 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00127"></a>00127 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"</span>
-<a name="l00128"></a>00128 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00129"></a>00129 <span class="stringliteral">"}\n"</span>
-<a name="l00130"></a>00130 ; <span class="comment">//vector_align16_inplace_mult</span>
-<a name="l00131"></a>00131
-<a name="l00132"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">00132</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a32c5e56374f5fb07243905bc98192ed8">vector_align4_inplace_div_add</a> =
-<a name="l00133"></a>00133 <span class="stringliteral">"__kernel void inplace_div_add(\n"</span>
-<a name="l00134"></a>00134 <span class="stringliteral">" __global float4 * vec1,\n"</span>
-<a name="l00135"></a>00135 <span class="stringliteral">" __global const float4 * vec2,\n"</span>
-<a name="l00136"></a>00136 <span class="stringliteral">" __global const float * fac, //CPU variant is mapped to mult_add\n"</span>
-<a name="l00137"></a>00137 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00138"></a>00138 <span class="stringliteral">" ) \n"</span>
-<a name="l00139"></a>00139 <span class="stringliteral">"{ \n"</span>
-<a name="l00140"></a>00140 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00141"></a>00141 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00142"></a>00142 <span class="stringliteral">" vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00143"></a>00143 <span class="stringliteral">"}\n"</span>
-<a name="l00144"></a>00144 ; <span class="comment">//vector_align4_inplace_div_add</span>
-<a name="l00145"></a>00145
-<a name="l00146"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">00146</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a2c8531be2d8faaeaa5792b8d9abbe47a">vector_align4_cpu_mul_add</a> =
-<a name="l00147"></a>00147 <span class="stringliteral">"__kernel void cpu_mul_add(\n"</span>
-<a name="l00148"></a>00148 <span class="stringliteral">" __global const float4 * vec1,\n"</span>
-<a name="l00149"></a>00149 <span class="stringliteral">" float factor,\n"</span>
-<a name="l00150"></a>00150 <span class="stringliteral">" __global const float4 * vec2,\n"</span>
-<a name="l00151"></a>00151 <span class="stringliteral">" __global float4 * result,\n"</span>
-<a name="l00152"></a>00152 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00153"></a>00153 <span class="stringliteral">" ) \n"</span>
-<a name="l00154"></a>00154 <span class="stringliteral">"{ \n"</span>
-<a name="l00155"></a>00155 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00156"></a>00156 <span class="stringliteral">" result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00157"></a>00157 <span class="stringliteral">"}\n"</span>
-<a name="l00158"></a>00158 ; <span class="comment">//vector_align4_cpu_mul_add</span>
-<a name="l00159"></a>00159
-<a name="l00160"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">00160</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a063ef5b8264defb1b8294a8b2e0f0e0e">vector_align4_inplace_mul_sub</a> =
-<a name="l00161"></a>00161 <span class="stringliteral">"__kernel void inplace_mul_sub(\n"</span>
-<a name="l00162"></a>00162 <span class="stringliteral">" __global float4 * vec1,\n"</span>
-<a name="l00163"></a>00163 <span class="stringliteral">" __global const float4 * vec2,\n"</span>
-<a name="l00164"></a>00164 <span class="stringliteral">" __global const float * fac, //CPU variant is mapped to mult_add\n"</span>
-<a name="l00165"></a>00165 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00166"></a>00166 <span class="stringliteral">" ) \n"</span>
-<a name="l00167"></a>00167 <span class="stringliteral">"{ \n"</span>
-<a name="l00168"></a>00168 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00169"></a>00169 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00170"></a>00170 <span class="stringliteral">" vec1[i] -= vec2[i] * factor;\n"</span>
-<a name="l00171"></a>00171 <span class="stringliteral">"}\n"</span>
-<a name="l00172"></a>00172 ; <span class="comment">//vector_align4_inplace_mul_sub</span>
-<a name="l00173"></a>00173
-<a name="l00174"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">00174</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abc3c71bf976f8fe2db2bff85801db645">vector_align4_inplace_mul_add</a> =
-<a name="l00175"></a>00175 <span class="stringliteral">"__kernel void inplace_mul_add(\n"</span>
-<a name="l00176"></a>00176 <span class="stringliteral">" __global float4 * vec1,\n"</span>
-<a name="l00177"></a>00177 <span class="stringliteral">" __global const float4 * vec2,\n"</span>
-<a name="l00178"></a>00178 <span class="stringliteral">" __global const float * fac,\n"</span>
-<a name="l00179"></a>00179 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00180"></a>00180 <span class="stringliteral">" ) \n"</span>
-<a name="l00181"></a>00181 <span class="stringliteral">"{ \n"</span>
-<a name="l00182"></a>00182 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00183"></a>00183 <span class="stringliteral">" unsigned int size_div_4 = size >> 2;\n"</span>
-<a name="l00184"></a>00184 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size_div_4; i += get_global_size(0))\n"</span>
-<a name="l00185"></a>00185 <span class="stringliteral">" vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00186"></a>00186 <span class="stringliteral">"}\n"</span>
-<a name="l00187"></a>00187 ; <span class="comment">//vector_align4_inplace_mul_add</span>
-<a name="l00188"></a>00188
-<a name="l00189"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">00189</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abe251ca4405801494141c923d47d3141">vector_align4_mul_add</a> =
-<a name="l00190"></a>00190 <span class="stringliteral">"__kernel void mul_add(\n"</span>
-<a name="l00191"></a>00191 <span class="stringliteral">" __global const float4 * vec1,\n"</span>
-<a name="l00192"></a>00192 <span class="stringliteral">" __global const float * fac,\n"</span>
-<a name="l00193"></a>00193 <span class="stringliteral">" __global const float4 * vec2,\n"</span>
-<a name="l00194"></a>00194 <span class="stringliteral">" __global float4 * result,\n"</span>
-<a name="l00195"></a>00195 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00196"></a>00196 <span class="stringliteral">" ) \n"</span>
-<a name="l00197"></a>00197 <span class="stringliteral">"{ \n"</span>
-<a name="l00198"></a>00198 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00199"></a>00199 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00200"></a>00200 <span class="stringliteral">" result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00201"></a>00201 <span class="stringliteral">"}\n"</span>
-<a name="l00202"></a>00202 ; <span class="comment">//vector_align4_mul_add</span>
-<a name="l00203"></a>00203
-<a name="l00204"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">00204</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#abd9091b11b3540ffbf5255ae48bb88c5">vector_align4_cpu_inplace_mul_add</a> =
-<a name="l00205"></a>00205 <span class="stringliteral">"__kernel void cpu_inplace_mul_add(\n"</span>
-<a name="l00206"></a>00206 <span class="stringliteral">" __global float4 * vec1,\n"</span>
-<a name="l00207"></a>00207 <span class="stringliteral">" __global const float4 * vec2,\n"</span>
-<a name="l00208"></a>00208 <span class="stringliteral">" float factor,\n"</span>
-<a name="l00209"></a>00209 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00210"></a>00210 <span class="stringliteral">" ) \n"</span>
-<a name="l00211"></a>00211 <span class="stringliteral">"{ \n"</span>
-<a name="l00212"></a>00212 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00213"></a>00213 <span class="stringliteral">" vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00214"></a>00214 <span class="stringliteral">"}\n"</span>
-<a name="l00215"></a>00215 ; <span class="comment">//vector_align4_cpu_inplace_mul_add</span>
-<a name="l00216"></a>00216
-<a name="l00217"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">00217</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a78dc391cab58d160dd73e4c400e02c7e">vector_align4_inplace_div_sub</a> =
-<a name="l00218"></a>00218 <span class="stringliteral">"__kernel void inplace_div_sub(\n"</span>
-<a name="l00219"></a>00219 <span class="stringliteral">" __global float4 * vec1,\n"</span>
-<a name="l00220"></a>00220 <span class="stringliteral">" __global const float4 * vec2,\n"</span>
-<a name="l00221"></a>00221 <span class="stringliteral">" __global const float * fac, //CPU variant is mapped to mult_add\n"</span>
-<a name="l00222"></a>00222 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00223"></a>00223 <span class="stringliteral">" ) \n"</span>
-<a name="l00224"></a>00224 <span class="stringliteral">"{ \n"</span>
-<a name="l00225"></a>00225 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00226"></a>00226 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"</span>
-<a name="l00227"></a>00227 <span class="stringliteral">" vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00228"></a>00228 <span class="stringliteral">"}\n"</span>
-<a name="l00229"></a>00229 ; <span class="comment">//vector_align4_inplace_div_sub</span>
-<a name="l00230"></a>00230
-<a name="l00231"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">00231</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a8be10b47607e0aba6f1528969eadb613">vector_align1_inplace_sub</a> =
-<a name="l00232"></a>00232 <span class="stringliteral">"__kernel void inplace_sub(\n"</span>
-<a name="l00233"></a>00233 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00234"></a>00234 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00235"></a>00235 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00236"></a>00236 <span class="stringliteral">"{ \n"</span>
-<a name="l00237"></a>00237 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00238"></a>00238 <span class="stringliteral">" vec1[i] -= vec2[i];\n"</span>
-<a name="l00239"></a>00239 <span class="stringliteral">"}\n"</span>
-<a name="l00240"></a>00240 ; <span class="comment">//vector_align1_inplace_sub</span>
-<a name="l00241"></a>00241
-<a name="l00242"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">00242</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac6f96be4155b23916953807f3b2d9a6b">vector_align1_norm_inf</a> =
-<a name="l00243"></a>00243 <span class="stringliteral">"\n"</span>
-<a name="l00244"></a>00244 <span class="stringliteral">"////// norm_inf\n"</span>
-<a name="l00245"></a>00245 <span class="stringliteral">"float impl_norm_inf(\n"</span>
-<a name="l00246"></a>00246 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00247"></a>00247 <span class="stringliteral">" unsigned int start_index,\n"</span>
-<a name="l00248"></a>00248 <span class="stringliteral">" unsigned int end_index,\n"</span>
-<a name="l00249"></a>00249 <span class="stringliteral">" __local float * tmp_buffer)\n"</span>
-<a name="l00250"></a>00250 <span class="stringliteral">"{\n"</span>
-<a name="l00251"></a>00251 <span class="stringliteral">" float tmp = 0;\n"</span>
-<a name="l00252"></a>00252 <span class="stringliteral">" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00253"></a>00253 <span class="stringliteral">" tmp = fmax(fabs(vec[i]), tmp);\n"</span>
-<a name="l00254"></a>00254 <span class="stringliteral">" tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00255"></a>00255 <span class="stringliteral">" \n"</span>
-<a name="l00256"></a>00256 <span class="stringliteral">" //step 2: parallel reduction:\n"</span>
-<a name="l00257"></a>00257 <span class="stringliteral">" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00258"></a>00258 <span class="stringliteral">" {\n"</span>
-<a name="l00259"></a>00259 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00260"></a>00260 <span class="stringliteral">" if (get_global_id(0) < stride)\n"</span>
-<a name="l00261"></a>00261 <span class="stringliteral">" tmp_buffer[get_global_id(0)] = fmax(tmp_buffer[get_global_id(0)], tmp_buffer[get_global_id(0)+stride]);\n"</span>
-<a name="l00262"></a>00262 <span class="stringliteral">" }\n"</span>
-<a name="l00263"></a>00263 <span class="stringliteral">" \n"</span>
-<a name="l00264"></a>00264 <span class="stringliteral">" return tmp_buffer[0];\n"</span>
-<a name="l00265"></a>00265 <span class="stringliteral">"}\n"</span>
-<a name="l00266"></a>00266 <span class="stringliteral">"\n"</span>
-<a name="l00267"></a>00267 <span class="stringliteral">"__kernel void norm_inf(\n"</span>
-<a name="l00268"></a>00268 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00269"></a>00269 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00270"></a>00270 <span class="stringliteral">" __local float * tmp_buffer,\n"</span>
-<a name="l00271"></a>00271 <span class="stringliteral">" global float * group_buffer)\n"</span>
-<a name="l00272"></a>00272 <span class="stringliteral">"{\n"</span>
-<a name="l00273"></a>00273 <span class="stringliteral">" float tmp = impl_norm_inf(vec,\n"</span>
-<a name="l00274"></a>00274 <span class="stringliteral">" ( get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00275"></a>00275 <span class="stringliteral">" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00276"></a>00276 <span class="stringliteral">" tmp_buffer);\n"</span>
-<a name="l00277"></a>00277 <span class="stringliteral">" \n"</span>
-<a name="l00278"></a>00278 <span class="stringliteral">" if (get_local_id(0) == 0)\n"</span>
-<a name="l00279"></a>00279 <span class="stringliteral">" group_buffer[get_group_id(0)] = tmp; \n"</span>
-<a name="l00280"></a>00280 <span class="stringliteral">"}\n"</span>
-<a name="l00281"></a>00281 ; <span class="comment">//vector_align1_norm_inf</span>
-<a name="l00282"></a>00282
-<a name="l00283"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">00283</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a82b1498269a9022b247d6ac60a2116e0">vector_align1_index_norm_inf</a> =
-<a name="l00284"></a>00284 <span class="stringliteral">"//index_norm_inf:\n"</span>
-<a name="l00285"></a>00285 <span class="stringliteral">"unsigned int float_vector1_index_norm_inf_impl(\n"</span>
-<a name="l00286"></a>00286 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00287"></a>00287 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00288"></a>00288 <span class="stringliteral">" __local float * float_buffer,\n"</span>
-<a name="l00289"></a>00289 <span class="stringliteral">" __local unsigned int * index_buffer)\n"</span>
-<a name="l00290"></a>00290 <span class="stringliteral">"{\n"</span>
-<a name="l00291"></a>00291 <span class="stringliteral">" //step 1: fill buffer:\n"</span>
-<a name="l00292"></a>00292 <span class="stringliteral">" float cur_max = 0.0f;\n"</span>
-<a name="l00293"></a>00293 <span class="stringliteral">" float tmp;\n"</span>
-<a name="l00294"></a>00294 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00295"></a>00295 <span class="stringliteral">" {\n"</span>
-<a name="l00296"></a>00296 <span class="stringliteral">" tmp = fabs(vec[i]);\n"</span>
-<a name="l00297"></a>00297 <span class="stringliteral">" if (cur_max < tmp)\n"</span>
-<a name="l00298"></a>00298 <span class="stringliteral">" {\n"</span>
-<a name="l00299"></a>00299 <span class="stringliteral">" float_buffer[get_global_id(0)] = tmp;\n"</span>
-<a name="l00300"></a>00300 <span class="stringliteral">" index_buffer[get_global_id(0)] = i;\n"</span>
-<a name="l00301"></a>00301 <span class="stringliteral">" cur_max = tmp;\n"</span>
-<a name="l00302"></a>00302 <span class="stringliteral">" }\n"</span>
-<a name="l00303"></a>00303 <span class="stringliteral">" }\n"</span>
-<a name="l00304"></a>00304 <span class="stringliteral">" \n"</span>
-<a name="l00305"></a>00305 <span class="stringliteral">" //step 2: parallel reduction:\n"</span>
-<a name="l00306"></a>00306 <span class="stringliteral">" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00307"></a>00307 <span class="stringliteral">" {\n"</span>
-<a name="l00308"></a>00308 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00309"></a>00309 <span class="stringliteral">" if (get_global_id(0) < stride)\n"</span>
-<a name="l00310"></a>00310 <span class="stringliteral">" {\n"</span>
-<a name="l00311"></a>00311 <span class="stringliteral">" //find the first occurring index\n"</span>
-<a name="l00312"></a>00312 <span class="stringliteral">" if (float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride])\n"</span>
-<a name="l00313"></a>00313 <span class="stringliteral">" {\n"</span>
-<a name="l00314"></a>00314 <span class="stringliteral">" index_buffer[get_global_id(0)] = index_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00315"></a>00315 <span class="stringliteral">" float_buffer[get_global_id(0)] = float_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00316"></a>00316 <span class="stringliteral">" }\n"</span>
-<a name="l00317"></a>00317 <span class="stringliteral">" \n"</span>
-<a name="l00318"></a>00318 <span class="stringliteral">" //index_buffer[get_global_id(0)] = float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride] ? index_buffer[get_global_id(0)+stride] : index_buffer[get_global_id(0)];\n"</span>
-<a name="l00319"></a>00319 <span class="stringliteral">" //float_buffer[get_global_id(0)] = max(float_buffer[get_global_id(0)], float_buffer[get_global_id(0)+stride]);\n"</span>
-<a name="l00320"></a>00320 <span class="stringliteral">" }\n"</span>
-<a name="l00321"></a>00321 <span class="stringliteral">" }\n"</span>
-<a name="l00322"></a>00322 <span class="stringliteral">" \n"</span>
-<a name="l00323"></a>00323 <span class="stringliteral">" return index_buffer[0];\n"</span>
-<a name="l00324"></a>00324 <span class="stringliteral">"}\n"</span>
-<a name="l00325"></a>00325 <span class="stringliteral">"\n"</span>
-<a name="l00326"></a>00326 <span class="stringliteral">"__kernel void index_norm_inf(\n"</span>
-<a name="l00327"></a>00327 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00328"></a>00328 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00329"></a>00329 <span class="stringliteral">" __local float * float_buffer,\n"</span>
-<a name="l00330"></a>00330 <span class="stringliteral">" __local unsigned int * index_buffer,\n"</span>
-<a name="l00331"></a>00331 <span class="stringliteral">" global unsigned int * result) \n"</span>
-<a name="l00332"></a>00332 <span class="stringliteral">"{ \n"</span>
-<a name="l00333"></a>00333 <span class="stringliteral">" unsigned int tmp = float_vector1_index_norm_inf_impl(vec, size, float_buffer, index_buffer);\n"</span>
-<a name="l00334"></a>00334 <span class="stringliteral">" if (get_global_id(0) == 0) *result = tmp;\n"</span>
-<a name="l00335"></a>00335 <span class="stringliteral">"}\n"</span>
-<a name="l00336"></a>00336 <span class="stringliteral">"\n"</span>
-<a name="l00337"></a>00337 <span class="stringliteral">"\n"</span>
-<a name="l00338"></a>00338 ; <span class="comment">//vector_align1_index_norm_inf</span>
-<a name="l00339"></a>00339
-<a name="l00340"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">00340</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ad2c633faeaf02b8e8eb4eaae13e57c15">vector_align1_mult</a> =
-<a name="l00341"></a>00341 <span class="stringliteral">"__kernel void mult(\n"</span>
-<a name="l00342"></a>00342 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00343"></a>00343 <span class="stringliteral">" __global const float * fac, \n"</span>
-<a name="l00344"></a>00344 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00345"></a>00345 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00346"></a>00346 <span class="stringliteral">"{ \n"</span>
-<a name="l00347"></a>00347 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00348"></a>00348 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00349"></a>00349 <span class="stringliteral">" result[i] = vec[i] * factor;\n"</span>
-<a name="l00350"></a>00350 <span class="stringliteral">"}\n"</span>
-<a name="l00351"></a>00351 ; <span class="comment">//vector_align1_mult</span>
-<a name="l00352"></a>00352
-<a name="l00353"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">00353</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a1d7a3c17099d6663f53ee9fec8712051">vector_align1_swap</a> =
-<a name="l00354"></a>00354 <span class="stringliteral">"////// swap:\n"</span>
-<a name="l00355"></a>00355 <span class="stringliteral">"__kernel void swap(\n"</span>
-<a name="l00356"></a>00356 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00357"></a>00357 <span class="stringliteral">" __global float * vec2,\n"</span>
-<a name="l00358"></a>00358 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00359"></a>00359 <span class="stringliteral">" ) \n"</span>
-<a name="l00360"></a>00360 <span class="stringliteral">"{ \n"</span>
-<a name="l00361"></a>00361 <span class="stringliteral">" float tmp;\n"</span>
-<a name="l00362"></a>00362 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00363"></a>00363 <span class="stringliteral">" {\n"</span>
-<a name="l00364"></a>00364 <span class="stringliteral">" tmp = vec2[i];\n"</span>
-<a name="l00365"></a>00365 <span class="stringliteral">" vec2[i] = vec1[i];\n"</span>
-<a name="l00366"></a>00366 <span class="stringliteral">" vec1[i] = tmp;\n"</span>
-<a name="l00367"></a>00367 <span class="stringliteral">" }\n"</span>
-<a name="l00368"></a>00368 <span class="stringliteral">"}\n"</span>
-<a name="l00369"></a>00369 <span class="stringliteral">" \n"</span>
-<a name="l00370"></a>00370 ; <span class="comment">//vector_align1_swap</span>
-<a name="l00371"></a>00371
-<a name="l00372"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">00372</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a9e25c2ae7680939cab4868a9c29cb6dd">vector_align1_inplace_div_add</a> =
-<a name="l00373"></a>00373 <span class="stringliteral">"///// divide add:\n"</span>
-<a name="l00374"></a>00374 <span class="stringliteral">"__kernel void inplace_div_add(\n"</span>
-<a name="l00375"></a>00375 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00376"></a>00376 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00377"></a>00377 <span class="stringliteral">" __global const float * fac, //CPU variant is mapped to mult_add\n"</span>
-<a name="l00378"></a>00378 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00379"></a>00379 <span class="stringliteral">" ) \n"</span>
-<a name="l00380"></a>00380 <span class="stringliteral">"{ \n"</span>
-<a name="l00381"></a>00381 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00382"></a>00382 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00383"></a>00383 <span class="stringliteral">" vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00384"></a>00384 <span class="stringliteral">"}\n"</span>
-<a name="l00385"></a>00385 ; <span class="comment">//vector_align1_inplace_div_add</span>
-<a name="l00386"></a>00386
-<a name="l00387"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">00387</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ae2e937dcf380e0157a213390426e5865">vector_align1_norm_2</a> =
-<a name="l00388"></a>00388 <span class="stringliteral">"//helper:\n"</span>
-<a name="l00389"></a>00389 <span class="stringliteral">"void helper_norm2_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00390"></a>00390 <span class="stringliteral">"{\n"</span>
-<a name="l00391"></a>00391 <span class="stringliteral">" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00392"></a>00392 <span class="stringliteral">" {\n"</span>
-<a name="l00393"></a>00393 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00394"></a>00394 <span class="stringliteral">" if (get_global_id(0) < stride)\n"</span>
-<a name="l00395"></a>00395 <span class="stringliteral">" tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00396"></a>00396 <span class="stringliteral">" }\n"</span>
-<a name="l00397"></a>00397 <span class="stringliteral">"}\n"</span>
-<a name="l00398"></a>00398 <span class="stringliteral">"\n"</span>
-<a name="l00399"></a>00399 <span class="stringliteral">"////// norm_2\n"</span>
-<a name="l00400"></a>00400 <span class="stringliteral">"float impl_norm_2(\n"</span>
-<a name="l00401"></a>00401 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00402"></a>00402 <span class="stringliteral">" unsigned int start_index,\n"</span>
-<a name="l00403"></a>00403 <span class="stringliteral">" unsigned int end_index,\n"</span>
-<a name="l00404"></a>00404 <span class="stringliteral">" __local float * tmp_buffer)\n"</span>
-<a name="l00405"></a>00405 <span class="stringliteral">"{\n"</span>
-<a name="l00406"></a>00406 <span class="stringliteral">" float tmp = 0;\n"</span>
-<a name="l00407"></a>00407 <span class="stringliteral">" float vec_entry = 0;\n"</span>
-<a name="l00408"></a>00408 <span class="stringliteral">" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00409"></a>00409 <span class="stringliteral">" {\n"</span>
-<a name="l00410"></a>00410 <span class="stringliteral">" vec_entry = vec[i];\n"</span>
-<a name="l00411"></a>00411 <span class="stringliteral">" tmp += vec_entry * vec_entry;\n"</span>
-<a name="l00412"></a>00412 <span class="stringliteral">" }\n"</span>
-<a name="l00413"></a>00413 <span class="stringliteral">" tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00414"></a>00414 <span class="stringliteral">" \n"</span>
-<a name="l00415"></a>00415 <span class="stringliteral">" helper_norm2_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00416"></a>00416 <span class="stringliteral">" \n"</span>
-<a name="l00417"></a>00417 <span class="stringliteral">" return tmp_buffer[0];\n"</span>
-<a name="l00418"></a>00418 <span class="stringliteral">"};\n"</span>
-<a name="l00419"></a>00419 <span class="stringliteral">"\n"</span>
-<a name="l00420"></a>00420 <span class="stringliteral">"__kernel void norm_2(\n"</span>
-<a name="l00421"></a>00421 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00422"></a>00422 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00423"></a>00423 <span class="stringliteral">" __local float * tmp_buffer,\n"</span>
-<a name="l00424"></a>00424 <span class="stringliteral">" global float * group_buffer)\n"</span>
-<a name="l00425"></a>00425 <span class="stringliteral">"{\n"</span>
-<a name="l00426"></a>00426 <span class="stringliteral">" float tmp = impl_norm_2(vec,\n"</span>
-<a name="l00427"></a>00427 <span class="stringliteral">" ( get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00428"></a>00428 <span class="stringliteral">" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00429"></a>00429 <span class="stringliteral">" tmp_buffer);\n"</span>
-<a name="l00430"></a>00430 <span class="stringliteral">" \n"</span>
-<a name="l00431"></a>00431 <span class="stringliteral">" if (get_local_id(0) == 0)\n"</span>
-<a name="l00432"></a>00432 <span class="stringliteral">" group_buffer[get_group_id(0)] = tmp; \n"</span>
-<a name="l00433"></a>00433 <span class="stringliteral">"}\n"</span>
-<a name="l00434"></a>00434 <span class="stringliteral">"\n"</span>
-<a name="l00435"></a>00435 ; <span class="comment">//vector_align1_norm_2</span>
-<a name="l00436"></a>00436
-<a name="l00437"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">00437</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aae25f12f886fb6b36885ff389f68ed23">vector_align1_sub</a> =
-<a name="l00438"></a>00438 <span class="stringliteral">"__kernel void sub(\n"</span>
-<a name="l00439"></a>00439 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00440"></a>00440 <span class="stringliteral">" __global const float * vec2, \n"</span>
-<a name="l00441"></a>00441 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00442"></a>00442 <span class="stringliteral">" unsigned int size)\n"</span>
-<a name="l00443"></a>00443 <span class="stringliteral">"{ \n"</span>
-<a name="l00444"></a>00444 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00445"></a>00445 <span class="stringliteral">" result[i] = vec1[i] - vec2[i];\n"</span>
-<a name="l00446"></a>00446 <span class="stringliteral">"}\n"</span>
-<a name="l00447"></a>00447 ; <span class="comment">//vector_align1_sub</span>
-<a name="l00448"></a>00448
-<a name="l00449"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">00449</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a907caa29f143941388d80c970cf85861">vector_align1_cpu_mul_add</a> =
-<a name="l00450"></a>00450 <span class="stringliteral">"__kernel void cpu_mul_add(\n"</span>
-<a name="l00451"></a>00451 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00452"></a>00452 <span class="stringliteral">" float factor,\n"</span>
-<a name="l00453"></a>00453 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00454"></a>00454 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00455"></a>00455 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00456"></a>00456 <span class="stringliteral">" ) \n"</span>
-<a name="l00457"></a>00457 <span class="stringliteral">"{ \n"</span>
-<a name="l00458"></a>00458 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00459"></a>00459 <span class="stringliteral">" result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00460"></a>00460 <span class="stringliteral">"}\n"</span>
-<a name="l00461"></a>00461 ; <span class="comment">//vector_align1_cpu_mul_add</span>
-<a name="l00462"></a>00462
-<a name="l00463"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">00463</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a92c69656763ed08bcbdcd1d035b4d7f0">vector_align1_vmax</a> =
-<a name="l00464"></a>00464 <span class="stringliteral">"__kernel void vmax(\n"</span>
-<a name="l00465"></a>00465 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00466"></a>00466 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00467"></a>00467 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00468"></a>00468 <span class="stringliteral">"{ \n"</span>
-<a name="l00469"></a>00469 <span class="stringliteral">" //parallel reduction on global memory:\n"</span>
-<a name="l00470"></a>00470 <span class="stringliteral">" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00471"></a>00471 <span class="stringliteral">" {\n"</span>
-<a name="l00472"></a>00472 <span class="stringliteral">" if (get_global_id(0) < stride)\n"</span>
-<a name="l00473"></a>00473 <span class="stringliteral">" vec1[get_global_id(0)] = fmax(vec1[get_global_id(0)+stride], vec1[get_global_id(0)]);\n"</span>
-<a name="l00474"></a>00474 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00475"></a>00475 <span class="stringliteral">" }\n"</span>
-<a name="l00476"></a>00476 <span class="stringliteral">" \n"</span>
-<a name="l00477"></a>00477 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00478"></a>00478 <span class="stringliteral">" *result = vec1[0]; \n"</span>
-<a name="l00479"></a>00479 <span class="stringliteral">"}\n"</span>
-<a name="l00480"></a>00480 ; <span class="comment">//vector_align1_vmax</span>
-<a name="l00481"></a>00481
-<a name="l00482"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">00482</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a964b4612e0b77e8925335b1b784cd5c4">vector_align1_inner_prod</a> =
-<a name="l00483"></a>00483 <span class="stringliteral">"//helper:\n"</span>
-<a name="l00484"></a>00484 <span class="stringliteral">"void helper_inner_prod_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00485"></a>00485 <span class="stringliteral">"{\n"</span>
-<a name="l00486"></a>00486 <span class="stringliteral">" for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00487"></a>00487 <span class="stringliteral">" {\n"</span>
-<a name="l00488"></a>00488 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00489"></a>00489 <span class="stringliteral">" if (get_local_id(0) < stride)\n"</span>
-<a name="l00490"></a>00490 <span class="stringliteral">" tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"</span>
-<a name="l00491"></a>00491 <span class="stringliteral">" }\n"</span>
-<a name="l00492"></a>00492 <span class="stringliteral">"}\n"</span>
-<a name="l00493"></a>00493 <span class="stringliteral">"//////// inner products:\n"</span>
-<a name="l00494"></a>00494 <span class="stringliteral">"float impl_inner_prod(\n"</span>
-<a name="l00495"></a>00495 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00496"></a>00496 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00497"></a>00497 <span class="stringliteral">" unsigned int start_index,\n"</span>
-<a name="l00498"></a>00498 <span class="stringliteral">" unsigned int end_index,\n"</span>
-<a name="l00499"></a>00499 <span class="stringliteral">" __local float * tmp_buffer)\n"</span>
-<a name="l00500"></a>00500 <span class="stringliteral">"{\n"</span>
-<a name="l00501"></a>00501 <span class="stringliteral">" float tmp = 0;\n"</span>
-<a name="l00502"></a>00502 <span class="stringliteral">" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00503"></a>00503 <span class="stringliteral">" tmp += vec1[i] * vec2[i];\n"</span>
-<a name="l00504"></a>00504 <span class="stringliteral">" tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00505"></a>00505 <span class="stringliteral">" \n"</span>
-<a name="l00506"></a>00506 <span class="stringliteral">" helper_inner_prod_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00507"></a>00507 <span class="stringliteral">" \n"</span>
-<a name="l00508"></a>00508 <span class="stringliteral">" return tmp_buffer[0];\n"</span>
-<a name="l00509"></a>00509 <span class="stringliteral">"}\n"</span>
-<a name="l00510"></a>00510 <span class="stringliteral">"__kernel void inner_prod(\n"</span>
-<a name="l00511"></a>00511 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00512"></a>00512 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00513"></a>00513 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00514"></a>00514 <span class="stringliteral">" __local float * tmp_buffer,\n"</span>
-<a name="l00515"></a>00515 <span class="stringliteral">" global float * group_buffer)\n"</span>
-<a name="l00516"></a>00516 <span class="stringliteral">"{\n"</span>
-<a name="l00517"></a>00517 <span class="stringliteral">" float tmp = impl_inner_prod(vec1,\n"</span>
-<a name="l00518"></a>00518 <span class="stringliteral">" vec2,\n"</span>
-<a name="l00519"></a>00519 <span class="stringliteral">" ( get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00520"></a>00520 <span class="stringliteral">" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00521"></a>00521 <span class="stringliteral">" tmp_buffer);\n"</span>
-<a name="l00522"></a>00522 <span class="stringliteral">" \n"</span>
-<a name="l00523"></a>00523 <span class="stringliteral">" if (get_local_id(0) == 0)\n"</span>
-<a name="l00524"></a>00524 <span class="stringliteral">" group_buffer[get_group_id(0)] = tmp;\n"</span>
-<a name="l00525"></a>00525 <span class="stringliteral">" \n"</span>
-<a name="l00526"></a>00526 <span class="stringliteral">"}\n"</span>
-<a name="l00527"></a>00527 ; <span class="comment">//vector_align1_inner_prod</span>
-<a name="l00528"></a>00528
-<a name="l00529"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">00529</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a4644450b5bed0354a30e7f26a500aa44">vector_align1_add</a> =
-<a name="l00530"></a>00530 <span class="stringliteral">"__kernel void add(\n"</span>
-<a name="l00531"></a>00531 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00532"></a>00532 <span class="stringliteral">" __global const float * vec2, \n"</span>
-<a name="l00533"></a>00533 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00534"></a>00534 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00535"></a>00535 <span class="stringliteral">"{ \n"</span>
-<a name="l00536"></a>00536 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00537"></a>00537 <span class="stringliteral">" result[i] = vec1[i] + vec2[i];\n"</span>
-<a name="l00538"></a>00538 <span class="stringliteral">"}\n"</span>
-<a name="l00539"></a>00539 ; <span class="comment">//vector_align1_add</span>
-<a name="l00540"></a>00540
-<a name="l00541"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">00541</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac71cca04d5546ec4f05ea90c01e188e5">vector_align1_plane_rotation</a> =
-<a name="l00542"></a>00542 <span class="stringliteral">"////// plane rotation: (x,y) <- (\alpha x + \beta y, -\beta x + \alpha y)\n"</span>
-<a name="l00543"></a>00543 <span class="stringliteral">"__kernel void plane_rotation(\n"</span>
-<a name="l00544"></a>00544 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00545"></a>00545 <span class="stringliteral">" __global float * vec2, \n"</span>
-<a name="l00546"></a>00546 <span class="stringliteral">" float alpha,\n"</span>
-<a name="l00547"></a>00547 <span class="stringliteral">" float beta,\n"</span>
-<a name="l00548"></a>00548 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00549"></a>00549 <span class="stringliteral">"{ \n"</span>
-<a name="l00550"></a>00550 <span class="stringliteral">" float tmp1 = 0;\n"</span>
-<a name="l00551"></a>00551 <span class="stringliteral">" float tmp2 = 0;\n"</span>
-<a name="l00552"></a>00552 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00553"></a>00553 <span class="stringliteral">" {\n"</span>
-<a name="l00554"></a>00554 <span class="stringliteral">" tmp1 = vec1[i];\n"</span>
-<a name="l00555"></a>00555 <span class="stringliteral">" tmp2 = vec2[i];\n"</span>
-<a name="l00556"></a>00556 <span class="stringliteral">" \n"</span>
-<a name="l00557"></a>00557 <span class="stringliteral">" vec1[i] = alpha * tmp1 + beta * tmp2;\n"</span>
-<a name="l00558"></a>00558 <span class="stringliteral">" vec2[i] = alpha * tmp2 - beta * tmp1;\n"</span>
-<a name="l00559"></a>00559 <span class="stringliteral">" }\n"</span>
-<a name="l00560"></a>00560 <span class="stringliteral">"}\n"</span>
-<a name="l00561"></a>00561 ; <span class="comment">//vector_align1_plane_rotation</span>
-<a name="l00562"></a>00562
-<a name="l00563"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">00563</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a68c670ee8d4918f6773e7b5ef4b10f5c">vector_align1_inplace_mul_sub</a> =
-<a name="l00564"></a>00564 <span class="stringliteral">"__kernel void inplace_mul_sub(\n"</span>
-<a name="l00565"></a>00565 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00566"></a>00566 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00567"></a>00567 <span class="stringliteral">" __global const float * fac, //CPU variant is mapped to mult_add\n"</span>
-<a name="l00568"></a>00568 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00569"></a>00569 <span class="stringliteral">" ) \n"</span>
-<a name="l00570"></a>00570 <span class="stringliteral">"{ \n"</span>
-<a name="l00571"></a>00571 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00572"></a>00572 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00573"></a>00573 <span class="stringliteral">" vec1[i] -= vec2[i] * factor;\n"</span>
-<a name="l00574"></a>00574 <span class="stringliteral">"}\n"</span>
-<a name="l00575"></a>00575 ; <span class="comment">//vector_align1_inplace_mul_sub</span>
-<a name="l00576"></a>00576
-<a name="l00577"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">00577</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aea72487f3fa81f2fa16cd5b2e77499ed">vector_align1_inplace_mul_add</a> =
-<a name="l00578"></a>00578 <span class="stringliteral">"__kernel void inplace_mul_add(\n"</span>
-<a name="l00579"></a>00579 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00580"></a>00580 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00581"></a>00581 <span class="stringliteral">" __global const float * fac,\n"</span>
-<a name="l00582"></a>00582 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00583"></a>00583 <span class="stringliteral">" ) \n"</span>
-<a name="l00584"></a>00584 <span class="stringliteral">"{ \n"</span>
-<a name="l00585"></a>00585 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00586"></a>00586 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00587"></a>00587 <span class="stringliteral">" vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00588"></a>00588 <span class="stringliteral">"}\n"</span>
-<a name="l00589"></a>00589 ; <span class="comment">//vector_align1_inplace_mul_add</span>
-<a name="l00590"></a>00590
-<a name="l00591"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">00591</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a74dd6c45922bdc18ee431054e4ef0d2e">vector_align1_mul_add</a> =
-<a name="l00592"></a>00592 <span class="stringliteral">"__kernel void mul_add(\n"</span>
-<a name="l00593"></a>00593 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00594"></a>00594 <span class="stringliteral">" __global const float * fac,\n"</span>
-<a name="l00595"></a>00595 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00596"></a>00596 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00597"></a>00597 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00598"></a>00598 <span class="stringliteral">" ) \n"</span>
-<a name="l00599"></a>00599 <span class="stringliteral">"{ \n"</span>
-<a name="l00600"></a>00600 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00601"></a>00601 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00602"></a>00602 <span class="stringliteral">" result[i] = vec1[i] * factor + vec2[i];\n"</span>
-<a name="l00603"></a>00603 <span class="stringliteral">"}\n"</span>
-<a name="l00604"></a>00604 ; <span class="comment">//vector_align1_mul_add</span>
-<a name="l00605"></a>00605
-<a name="l00606"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">00606</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a12809202c5e7df94fe3a314c4d414e2b">vector_align1_cpu_mult</a> =
-<a name="l00607"></a>00607 <span class="stringliteral">"__kernel void cpu_mult(\n"</span>
-<a name="l00608"></a>00608 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00609"></a>00609 <span class="stringliteral">" float factor, \n"</span>
-<a name="l00610"></a>00610 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00611"></a>00611 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00612"></a>00612 <span class="stringliteral">"{ \n"</span>
-<a name="l00613"></a>00613 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00614"></a>00614 <span class="stringliteral">" result[i] = vec[i] * factor;\n"</span>
-<a name="l00615"></a>00615 <span class="stringliteral">"}\n"</span>
-<a name="l00616"></a>00616 ; <span class="comment">//vector_align1_cpu_mult</span>
-<a name="l00617"></a>00617
-<a name="l00618"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">00618</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a87bd810e4986cf9f65bc98741329fa2a">vector_align1_inplace_divide</a> =
-<a name="l00619"></a>00619 <span class="stringliteral">"__kernel void inplace_divide(\n"</span>
-<a name="l00620"></a>00620 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00621"></a>00621 <span class="stringliteral">" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00622"></a>00622 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00623"></a>00623 <span class="stringliteral">"{ \n"</span>
-<a name="l00624"></a>00624 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00625"></a>00625 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00626"></a>00626 <span class="stringliteral">" vec[i] /= factor;\n"</span>
-<a name="l00627"></a>00627 <span class="stringliteral">"}\n"</span>
-<a name="l00628"></a>00628 ; <span class="comment">//vector_align1_inplace_divide</span>
-<a name="l00629"></a>00629
-<a name="l00630"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">00630</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a67009d4a18e1d46aadf9929826711048">vector_align1_sqrt_sum</a> =
-<a name="l00631"></a>00631 <span class="stringliteral">"__kernel void sqrt_sum(\n"</span>
-<a name="l00632"></a>00632 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00633"></a>00633 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00634"></a>00634 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00635"></a>00635 <span class="stringliteral">"{ \n"</span>
-<a name="l00636"></a>00636 <span class="stringliteral">" //parallel reduction on global memory: \n"</span>
-<a name="l00637"></a>00637 <span class="stringliteral">" \n"</span>
-<a name="l00638"></a>00638 <span class="stringliteral">" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00639"></a>00639 <span class="stringliteral">" {\n"</span>
-<a name="l00640"></a>00640 <span class="stringliteral">" if (get_global_id(0) < stride)\n"</span>
-<a name="l00641"></a>00641 <span class="stringliteral">" vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"</span>
-<a name="l00642"></a>00642 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00643"></a>00643 <span class="stringliteral">" }\n"</span>
-<a name="l00644"></a>00644 <span class="stringliteral">" \n"</span>
-<a name="l00645"></a>00645 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00646"></a>00646 <span class="stringliteral">" *result = sqrt(vec1[0]);\n"</span>
-<a name="l00647"></a>00647 <span class="stringliteral">" \n"</span>
-<a name="l00648"></a>00648 <span class="stringliteral">"}\n"</span>
-<a name="l00649"></a>00649 ; <span class="comment">//vector_align1_sqrt_sum</span>
-<a name="l00650"></a>00650
-<a name="l00651"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">00651</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6e5d349435efcbcec62e2811ff1402a9">vector_align1_cpu_inplace_mul_add</a> =
-<a name="l00652"></a>00652 <span class="stringliteral">"__kernel void cpu_inplace_mul_add(\n"</span>
-<a name="l00653"></a>00653 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00654"></a>00654 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00655"></a>00655 <span class="stringliteral">" float factor,\n"</span>
-<a name="l00656"></a>00656 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00657"></a>00657 <span class="stringliteral">" ) \n"</span>
-<a name="l00658"></a>00658 <span class="stringliteral">"{ \n"</span>
-<a name="l00659"></a>00659 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00660"></a>00660 <span class="stringliteral">" vec1[i] += vec2[i] * factor;\n"</span>
-<a name="l00661"></a>00661 <span class="stringliteral">"}\n"</span>
-<a name="l00662"></a>00662 ; <span class="comment">//vector_align1_cpu_inplace_mul_add</span>
-<a name="l00663"></a>00663
-<a name="l00664"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">00664</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0752b6f86b225eb7d6e326ebfb979773">vector_align1_inplace_add</a> =
-<a name="l00665"></a>00665 <span class="stringliteral">"__kernel void inplace_add(\n"</span>
-<a name="l00666"></a>00666 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00667"></a>00667 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00668"></a>00668 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00669"></a>00669 <span class="stringliteral">"{ \n"</span>
-<a name="l00670"></a>00670 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00671"></a>00671 <span class="stringliteral">" vec1[i] += vec2[i];\n"</span>
-<a name="l00672"></a>00672 <span class="stringliteral">"}\n"</span>
-<a name="l00673"></a>00673 ; <span class="comment">//vector_align1_inplace_add</span>
-<a name="l00674"></a>00674
-<a name="l00675"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">00675</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a0e37957e1e7b56029efd6fef22e8065e">vector_align1_divide</a> =
-<a name="l00676"></a>00676 <span class="stringliteral">"// Note: name 'div' is not allowed by the jit-compiler\n"</span>
-<a name="l00677"></a>00677 <span class="stringliteral">"__kernel void divide(\n"</span>
-<a name="l00678"></a>00678 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00679"></a>00679 <span class="stringliteral">" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"</span>
-<a name="l00680"></a>00680 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00681"></a>00681 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00682"></a>00682 <span class="stringliteral">"{ \n"</span>
-<a name="l00683"></a>00683 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00684"></a>00684 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00685"></a>00685 <span class="stringliteral">" result[i] = vec[i] / factor;\n"</span>
-<a name="l00686"></a>00686 <span class="stringliteral">"}\n"</span>
-<a name="l00687"></a>00687 ; <span class="comment">//vector_align1_divide</span>
-<a name="l00688"></a>00688
-<a name="l00689"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">00689</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a5d63eb770f765f00d7844b2f062b6e53">vector_align1_norm_1</a> =
-<a name="l00690"></a>00690 <span class="stringliteral">"//helper:\n"</span>
-<a name="l00691"></a>00691 <span class="stringliteral">"void helper_norm1_parallel_reduction( __local float * tmp_buffer )\n"</span>
-<a name="l00692"></a>00692 <span class="stringliteral">"{\n"</span>
-<a name="l00693"></a>00693 <span class="stringliteral">" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00694"></a>00694 <span class="stringliteral">" {\n"</span>
-<a name="l00695"></a>00695 <span class="stringliteral">" barrier(CLK_LOCAL_MEM_FENCE);\n"</span>
-<a name="l00696"></a>00696 <span class="stringliteral">" if (get_global_id(0) < stride)\n"</span>
-<a name="l00697"></a>00697 <span class="stringliteral">" tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"</span>
-<a name="l00698"></a>00698 <span class="stringliteral">" }\n"</span>
-<a name="l00699"></a>00699 <span class="stringliteral">"}\n"</span>
-<a name="l00700"></a>00700 <span class="stringliteral">"\n"</span>
-<a name="l00701"></a>00701 <span class="stringliteral">"////// norm_1\n"</span>
-<a name="l00702"></a>00702 <span class="stringliteral">"float impl_norm_1(\n"</span>
-<a name="l00703"></a>00703 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00704"></a>00704 <span class="stringliteral">" unsigned int start_index,\n"</span>
-<a name="l00705"></a>00705 <span class="stringliteral">" unsigned int end_index,\n"</span>
-<a name="l00706"></a>00706 <span class="stringliteral">" __local float * tmp_buffer)\n"</span>
-<a name="l00707"></a>00707 <span class="stringliteral">"{\n"</span>
-<a name="l00708"></a>00708 <span class="stringliteral">" float tmp = 0;\n"</span>
-<a name="l00709"></a>00709 <span class="stringliteral">" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"</span>
-<a name="l00710"></a>00710 <span class="stringliteral">" tmp += fabs(vec[i]);\n"</span>
-<a name="l00711"></a>00711 <span class="stringliteral">" \n"</span>
-<a name="l00712"></a>00712 <span class="stringliteral">" tmp_buffer[get_local_id(0)] = tmp;\n"</span>
-<a name="l00713"></a>00713 <span class="stringliteral">" \n"</span>
-<a name="l00714"></a>00714 <span class="stringliteral">" helper_norm1_parallel_reduction(tmp_buffer);\n"</span>
-<a name="l00715"></a>00715 <span class="stringliteral">" \n"</span>
-<a name="l00716"></a>00716 <span class="stringliteral">" return tmp_buffer[0];\n"</span>
-<a name="l00717"></a>00717 <span class="stringliteral">"};\n"</span>
-<a name="l00718"></a>00718 <span class="stringliteral">"\n"</span>
-<a name="l00719"></a>00719 <span class="stringliteral">"__kernel void norm_1(\n"</span>
-<a name="l00720"></a>00720 <span class="stringliteral">" __global const float * vec,\n"</span>
-<a name="l00721"></a>00721 <span class="stringliteral">" unsigned int size,\n"</span>
-<a name="l00722"></a>00722 <span class="stringliteral">" __local float * tmp_buffer,\n"</span>
-<a name="l00723"></a>00723 <span class="stringliteral">" global float * group_buffer)\n"</span>
-<a name="l00724"></a>00724 <span class="stringliteral">"{\n"</span>
-<a name="l00725"></a>00725 <span class="stringliteral">" float tmp = impl_norm_1(vec,\n"</span>
-<a name="l00726"></a>00726 <span class="stringliteral">" ( get_group_id(0) * size) / get_num_groups(0),\n"</span>
-<a name="l00727"></a>00727 <span class="stringliteral">" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"</span>
-<a name="l00728"></a>00728 <span class="stringliteral">" tmp_buffer);\n"</span>
-<a name="l00729"></a>00729 <span class="stringliteral">" \n"</span>
-<a name="l00730"></a>00730 <span class="stringliteral">" if (get_local_id(0) == 0)\n"</span>
-<a name="l00731"></a>00731 <span class="stringliteral">" group_buffer[get_group_id(0)] = tmp; \n"</span>
-<a name="l00732"></a>00732 <span class="stringliteral">"}\n"</span>
-<a name="l00733"></a>00733 <span class="stringliteral">"\n"</span>
-<a name="l00734"></a>00734 ; <span class="comment">//vector_align1_norm_1</span>
-<a name="l00735"></a>00735
-<a name="l00736"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">00736</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a96d4c1b730f29d791b6d37cfad6e0e2e">vector_align1_clear</a> =
-<a name="l00737"></a>00737 <span class="stringliteral">"__kernel void clear(\n"</span>
-<a name="l00738"></a>00738 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00739"></a>00739 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00740"></a>00740 <span class="stringliteral">"{ \n"</span>
-<a name="l00741"></a>00741 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00742"></a>00742 <span class="stringliteral">" vec[i] = 0;\n"</span>
-<a name="l00743"></a>00743 <span class="stringliteral">"}\n"</span>
-<a name="l00744"></a>00744 ; <span class="comment">//vector_align1_clear</span>
-<a name="l00745"></a>00745
-<a name="l00746"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">00746</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aceecbcde1257bb801edcba170eefaefe">vector_align1_cpu_inplace_mult</a> =
-<a name="l00747"></a>00747 <span class="stringliteral">"__kernel void cpu_inplace_mult(\n"</span>
-<a name="l00748"></a>00748 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00749"></a>00749 <span class="stringliteral">" float factor, \n"</span>
-<a name="l00750"></a>00750 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00751"></a>00751 <span class="stringliteral">"{ \n"</span>
-<a name="l00752"></a>00752 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00753"></a>00753 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00754"></a>00754 <span class="stringliteral">"}\n"</span>
-<a name="l00755"></a>00755 ; <span class="comment">//vector_align1_cpu_inplace_mult</span>
-<a name="l00756"></a>00756
-<a name="l00757"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">00757</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a032468ecb3b8a8977ab25dc308174a17">vector_align1_inplace_mult</a> =
-<a name="l00758"></a>00758 <span class="stringliteral">"__kernel void inplace_mult(\n"</span>
-<a name="l00759"></a>00759 <span class="stringliteral">" __global float * vec,\n"</span>
-<a name="l00760"></a>00760 <span class="stringliteral">" __global const float * fac, \n"</span>
-<a name="l00761"></a>00761 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00762"></a>00762 <span class="stringliteral">"{ \n"</span>
-<a name="l00763"></a>00763 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00764"></a>00764 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00765"></a>00765 <span class="stringliteral">" vec[i] *= factor;\n"</span>
-<a name="l00766"></a>00766 <span class="stringliteral">"}\n"</span>
-<a name="l00767"></a>00767 ; <span class="comment">//vector_align1_inplace_mult</span>
-<a name="l00768"></a>00768
-<a name="l00769"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">00769</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#aa1a2b931b02afb528ae5aef33087f555">vector_align1_sum</a> =
-<a name="l00770"></a>00770 <span class="stringliteral">"__kernel void sum(\n"</span>
-<a name="l00771"></a>00771 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00772"></a>00772 <span class="stringliteral">" __global float * result) \n"</span>
-<a name="l00773"></a>00773 <span class="stringliteral">"{ \n"</span>
-<a name="l00774"></a>00774 <span class="stringliteral">" //parallel reduction on global memory: \n"</span>
-<a name="l00775"></a>00775 <span class="stringliteral">" \n"</span>
-<a name="l00776"></a>00776 <span class="stringliteral">" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"</span>
-<a name="l00777"></a>00777 <span class="stringliteral">" {\n"</span>
-<a name="l00778"></a>00778 <span class="stringliteral">" if (get_global_id(0) < stride)\n"</span>
-<a name="l00779"></a>00779 <span class="stringliteral">" vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"</span>
-<a name="l00780"></a>00780 <span class="stringliteral">" barrier(CLK_GLOBAL_MEM_FENCE);\n"</span>
-<a name="l00781"></a>00781 <span class="stringliteral">" }\n"</span>
-<a name="l00782"></a>00782 <span class="stringliteral">" \n"</span>
-<a name="l00783"></a>00783 <span class="stringliteral">" if (get_global_id(0) == 0)\n"</span>
-<a name="l00784"></a>00784 <span class="stringliteral">" *result = vec1[0]; \n"</span>
-<a name="l00785"></a>00785 <span class="stringliteral">"}\n"</span>
-<a name="l00786"></a>00786 ; <span class="comment">//vector_align1_sum</span>
-<a name="l00787"></a>00787
-<a name="l00788"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">00788</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#ac2585e94f467a8703c774142cca17e54">vector_align1_inplace_div_sub</a> =
-<a name="l00789"></a>00789 <span class="stringliteral">"///// divide substract:\n"</span>
-<a name="l00790"></a>00790 <span class="stringliteral">"__kernel void inplace_div_sub(\n"</span>
-<a name="l00791"></a>00791 <span class="stringliteral">" __global float * vec1,\n"</span>
-<a name="l00792"></a>00792 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00793"></a>00793 <span class="stringliteral">" __global const float * fac, //CPU variant is mapped to mult_add\n"</span>
-<a name="l00794"></a>00794 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00795"></a>00795 <span class="stringliteral">" ) \n"</span>
-<a name="l00796"></a>00796 <span class="stringliteral">"{ \n"</span>
-<a name="l00797"></a>00797 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00798"></a>00798 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00799"></a>00799 <span class="stringliteral">" vec1[i] -= vec2[i] / factor;\n"</span>
-<a name="l00800"></a>00800 <span class="stringliteral">"}\n"</span>
-<a name="l00801"></a>00801 ; <span class="comment">//vector_align1_inplace_div_sub</span>
-<a name="l00802"></a>00802
-<a name="l00803"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">00803</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#a6009338719ce296eabc91af4761c3163">vector_align1_diag_precond</a> =
-<a name="l00804"></a>00804 <span class="stringliteral">"__kernel void diag_precond(\n"</span>
-<a name="l00805"></a>00805 <span class="stringliteral">" __global const float * diag_A_inv, \n"</span>
-<a name="l00806"></a>00806 <span class="stringliteral">" __global float * x, \n"</span>
-<a name="l00807"></a>00807 <span class="stringliteral">" unsigned int size) \n"</span>
-<a name="l00808"></a>00808 <span class="stringliteral">"{ \n"</span>
-<a name="l00809"></a>00809 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00810"></a>00810 <span class="stringliteral">" x[i] *= diag_A_inv[i];\n"</span>
-<a name="l00811"></a>00811 <span class="stringliteral">"}\n"</span>
-<a name="l00812"></a>00812 ; <span class="comment">//vector_align1_diag_precond</span>
-<a name="l00813"></a>00813
-<a name="l00814"></a><a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">00814</a> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceviennacl_1_1linalg_1_1kernels.html#adf7719cde9099c9e7f4871e4c168ed7a">vector_align1_mul_sub</a> =
-<a name="l00815"></a>00815 <span class="stringliteral">"///// multiply subtract:\n"</span>
-<a name="l00816"></a>00816 <span class="stringliteral">"__kernel void mul_sub(\n"</span>
-<a name="l00817"></a>00817 <span class="stringliteral">" __global const float * vec1,\n"</span>
-<a name="l00818"></a>00818 <span class="stringliteral">" __global const float * fac,\n"</span>
-<a name="l00819"></a>00819 <span class="stringliteral">" __global const float * vec2,\n"</span>
-<a name="l00820"></a>00820 <span class="stringliteral">" __global float * result,\n"</span>
-<a name="l00821"></a>00821 <span class="stringliteral">" unsigned int size\n"</span>
-<a name="l00822"></a>00822 <span class="stringliteral">" ) \n"</span>
-<a name="l00823"></a>00823 <span class="stringliteral">"{ \n"</span>
-<a name="l00824"></a>00824 <span class="stringliteral">" float factor = *fac;\n"</span>
-<a name="l00825"></a>00825 <span class="stringliteral">" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"</span>
-<a name="l00826"></a>00826 <span class="stringliteral">" result[i] = vec1[i] * factor - vec2[i];\n"</span>
-<a name="l00827"></a>00827 <span class="stringliteral">"}\n"</span>
-<a name="l00828"></a>00828 ; <span class="comment">//vector_align1_mul_sub</span>
-<a name="l00829"></a>00829
-<a name="l00830"></a>00830 } <span class="comment">//namespace kernels</span>
-<a name="l00831"></a>00831 } <span class="comment">//namespace linalg</span>
-<a name="l00832"></a>00832 } <span class="comment">//namespace viennacl</span>
-<a name="l00833"></a>00833 <span class="preprocessor">#endif</span>
-</pre></div></div>
-</div>
-<hr class="footer"/><address class="footer"><small>Generated on Sat May 21 2011 20:36:50 for ViennaCL - The Vienna Computing Library by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address>
-</body>
-</html>
diff --git a/doc/manual/Makefile b/doc/manual/Makefile
deleted file mode 100644
index d3f21f4..0000000
--- a/doc/manual/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-
-FILE=viennacl
-
-# ----------------------------------------------------------------------------
-
-build: build-latex build-dvi build-pdf build-clean
- mv $(FILE).pdf ../
-
-clean: build-clean
-
-# ----------------------------------------------------------------------------
-
-build-latex:
- latex ${FILE}.tex
- latex ${FILE}.tex
- bibtex ${FILE}
- latex ${FILE}.tex
- bibtex ${FILE}
- latex ${FILE}.tex
-
-build-dvi:
- dvips -Ppdf -G0 -ta4 $(FILE).dvi
-
-build-pdf:
- ps2pdf -dPDFSETTINGS=/prepress -dCompatibilityLevel=1.3 \
- -dMAxSubsetPct=100 -dSubsetFonts=true \
- -dEmbedAllFonts=true -sPAPERSIZE=a4 \
- -dAutoRotatePages=/None -dOptimize=true $(FILE).ps
-
-build-clean:
- rm -f *.dvi *.log *.aux *.idx *.ps *.out *.toc *~ *.backup
-
diff --git a/doc/manual/algorithms.tex b/doc/manual/algorithms.tex
index f5a25b5..83c3270 100644
--- a/doc/manual/algorithms.tex
+++ b/doc/manual/algorithms.tex
@@ -1,4 +1,4 @@
-\chapter{Algorithms}
+\chapter{Algorithms} \label{chap:algorithms}
This chapter gives an overview over the available algorithms in {\ViennaCL}.
The focus of {\ViennaCL} is on iterative solvers, for which {\ViennaCL} provides a generic implementation that allows the use of the same code on the CPU (either using \ublas, Eigen, MTL4 or \OpenCL) and on the GPU (using \OpenCL).
@@ -122,17 +122,14 @@ viennacl::linalg::gmres_tag custom_gmres(1e-10, 100, 30);
\end{lstlisting}
\section{Preconditioners}
-{\ViennaCL} ships with a generic implementation of an incomplete LU
-factorization preconditioner with threshold (ILUT), a Jacobi preconditioner and
-a row-scaling preconditioner. The incomplete factorization for ILUT is computed
-on a single CPU core due to its sequential nature, so one must not expect large
-performance gains if most time is spent on preconditioning. More
-preconditioners are in preparation and any contributions are very welcome.
+{\ViennaCL} ships with a generic implementation of several preconditioners.
+The preconditioner setup is expect for simple diagonal preconditioners always carried out on the CPU host due to the need for dynamically allocating memory.
+Thus, one may not obtain an overall performance benefit if too much time is spent on the preconditioner setup.
\TIP{The preconditioner also works for {\ublas} types!}
+In the following it is assumed that the sparse linear system of equations is given as follows:
\begin{lstlisting}
-using viennacl::linalg::ilut_precond;
using viennacl::compressed_matrix;
typedef compressed_matrix<float> SparseMatrix;
@@ -141,14 +138,68 @@ viennacl::vector<float> vcl_rhs;
viennacl::vector<float> vcl_result;
/* Set up matrix and vectors here */
+\end{lstlisting}
+
+% \begin{table}[tb]
+% \begin{center}
+% \renewcommand{\arraystretch}{1.2}
+% \begin{tabular}{p{3cm}|p{4cm}|p{7cm}}
+% Method & Brief description & Parameters\\
+% \hline
+% ILUT & incomplete LU factorization & First parameter: Maximum number of entries
+% per row. Second parameter: Drop tolerance. \\
+% Jacobi & Divide each row in $A$ by its diagonal entry & none \\
+% Row Scaling & Divide each row in $A$ by its norm & First parameter specifies
+% the norm (1: $l^1$-norm, 2: $l^2$-norm)\\
+% \hline
+% \end{tabular}
+% \caption{Preconditioners for iterative solvers in {\ViennaCL}.}
+% \label{tab:preconditioners}
+% \end{center}
+% \end{table}
+
+\subsection{Incomplete LU Factorization with Threshold (ILUT)}
+The incomplete LU factorization preconditioner aims at computing sparse matrices lower and upper triangular matrices $L$ and $U$ such that the sparse system
+matrix is approximately given by $A \approx LU$. In order to control the sparsity pattern of $L$ and $U$, a threshold strategy is used (ILUT)
+\cite{saad-iterative-solution}. Due to the serial nature of the preconditioner, the setup as well as each application of ILUT to the residual is computed on
+the CPU.
+\begin{lstlisting}
//compute ILUT preconditioner:
ilut_precond< SparseMatrix > vcl_ilut(vcl_matrix,
viennacl::linalg::ilut_tag());
+
+//solve (e.g. using conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(vcl_matrix,
+ vcl_rhs,
+ viennacl::linalg::bicgstab_tag(),
+ vcl_ilut); //preconditioner here
+\end{lstlisting}
+Two parameters can be passed to the constructor of \lstinline|ilut_tag|: The first specifies the maximum number of entries per row in $L$ and $U$, while the
+second parameter specifies the drop tolerance.
+
+
+\subsection{Jacobi Preconditioner}
+A Jacobi preconditioner is a simple diagonal preconditioner given by the reciprocals of the diagonal entries of the system matrix $A$.
+Use the preconditioner as follows:
+\begin{lstlisting}
//compute Jacobi preconditioner:
jacobi_precond< SparseMatrix > vcl_jacobi(vcl_matrix,
viennacl::linalg::jacobi_tag());
-//compute ILUT preconditioner:
+
+//solve (e.g. using conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(vcl_matrix,
+ vcl_rhs,
+ viennacl::linalg::cg_tag(),
+ vcl_jacobi);
+\end{lstlisting}
+
+
+\subsection{Row Scaling Preconditioner}
+A row scaling preconditioner is a simple diagonal preconditioner given by the reciprocals of the norms of the rows of the system matrix $A$.
+Use the preconditioner as follows:
+\begin{lstlisting}
+//compute row scaling preconditioner:
row_scaling< SparseMatrix > vcl_row_scaling(vcl_matrix,
viennacl::linalg::row_scaling_tag());
@@ -156,23 +207,182 @@ row_scaling< SparseMatrix > vcl_row_scaling(vcl_matrix,
vcl_result = viennacl::linalg::solve(vcl_matrix,
vcl_rhs,
viennacl::linalg::cg_tag(),
- vcl_ilut); //preconditioner here
+ vcl_row_scaling);
\end{lstlisting}
+The tag \lstinline|viennacl::linalg::row_scaling_tag()| can be supplied with a parameter denoting the norm to be used. A value of \lstinline|1| specifies the
+$l^1$-norm, while a value of $2$ selects the $l^2$-norm (default).
-\begin{table}[tb]
+\subsection{Algebraic Multigrid}
+\NOTE{Algebraic Multigrid preconditioners are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+\NOTE{Algebraic Multigrid preconditioners depend on {\ublas}.}
+
+Algebraic multigrid mimics the behavior of geometric multigrid on the algebraic level and is thus suited for black-box purposes, where only the system matrix
+and the right hand side vector are available \cite{trottenberg:multigrid}. Many different flavors of the individual multigrid ingredients exists
+\cite{yang:parallel-amg}, of which the most common ones are implemented in {\ViennaCL}.
+
+The two main ingredients of algebraic multigrid are a coarsening algorithm and an interpolation algorithm. The available coarsening methods are listed in
+Tab.~\ref{tab:amg-coarsening}.
+\begin{table}[tbp]
\begin{center}
-\renewcommand{\arraystretch}{1.2}
-\begin{tabular}{p{3cm}|p{4cm}|p{7cm}}
-Method & Brief description & Parameters\\
+\begin{tabular}{l|l}
+Description & {\ViennaCL} option constant \\
\hline
-ILUT & incomplete LU factorization & First parameter: Maximum number of entries
-per row. Second parameter: Drop tolerance. \\
-Jacobi & Divide each row in $A$ by its diagonal entry & none \\
-Row Scaling & Divide each row in $A$ by its norm & First parameter specifies
-the norm (1: $l^1$-norm, 2: $l^2$-norm)\\
+Classical Ruge-St\"uben (RS) & \lstinline|VIENNACL_AMG_COARSE_RS| \\
+One-Pass & \lstinline|VIENNACL_AMG_COARSE_ONEPASS| \\
+RS0 & \lstinline|VIENNACL_AMG_COARSE_RS0| \\
+RS3 & \lstinline|VIENNACL_AMG_COARSE_RS3| \\
+Aggregation & \lstinline|VIENNACL_AMG_COARSE_AG| \\
+Smoothed aggregation & \lstinline|VIENNACL_AMG_COARSE_SA| \\
+\end{tabular}
+\caption{AMG coarsening methods available in {\ViennaCL}. Per default, classical RS coarsening is used.\label{tab:amg-coarsening}}
+\end{center}
+\end{table}
+The available interpolation methods are given in Tab.~\ref{tab:amg-interpolation}.
+\begin{table}[tbp]
+\begin{center}
+\begin{tabular}{l|l}
+Description & {\ViennaCL} option constant \\
\hline
+Direct & \lstinline|VIENNACL_AMG_INTERPOL_DIRECT| \\
+Classic & \lstinline|VIENNACL_AMG_INTERPOL_ONEPASS| \\
+RS0 coarsening & \lstinline|VIENNACL_AMG_INTERPOL_RS0| \\
+RS3 coarsening & \lstinline|VIENNACL_AMG_INTERPOL_RS3| \\
\end{tabular}
-\caption{Preconditioners for iterative solvers in {\ViennaCL}.}
-\label{tab:preconditioners}
+\caption{AMG interpolation methods available in {\ViennaCL}. Per default, direct interpolation is used.\label{tab:amg-interpolation}}
\end{center}
\end{table}
+In addition, the following parameters can be controlled in the \lstinline|amg_tag| and can be passed to the constructor:
+\begin{itemize}
+ \item Strength of dependence threshold (default: $0.25$)
+ \item Interpolation weight (default: $1$)
+ \item Jacobi smoother weight (default: $1$)
+ \item Number of pre-smoothing steps (default: $1$)
+ \item Number of post-smoothing steps (default: $1$)
+ \item Number of coarse levels
+\end{itemize}
+
+\TIP{Note that the efficiency of the various AMG flavors are typically highly problem-specific. Therefore, failure of one method for a particular problem does
+NOT imply that other coarsening or interpolation strategies will fail as well.}
+
+\subsection{Sparse Approximate Inverses}
+
+\NOTE{Sparse Approximate Inverse preconditioners are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+\NOTE{Sparse Approximate Inverse preconditioners depend on {\ublas}.}
+
+An alternative construction of a preconditioner for a sparse system matrix $A$ is to compute a matrix $M$ with a prescribed sparsity pattern such that
+\begin{align}
+ \Vert AM - I \Vert_F \rightarrow \min \ ,
+\end{align}
+where $\Vert \cdot \Vert_F$ denotes the Frobenius norm.
+This is the basic idea of sparse approximate inverse (SPAI) preconditioner. It becomes increasingly attractive because of their inherent high degree of
+parallelism, since the minimization problem can be solved independently for each column of $M$. {\ViennaCL} provides two preconditioners of
+this family: The first is the classical SPAI algorithm as described by Grote and Huckle \cite{grote:spai}, the second is the factored SPAI (FSPAI) for symmetric
+matrices as proposed by Huckle \cite{huckle:fspai}.
+
+SPAI can be employed for a CPU matrix \lstinline|M| of type \lstinline|MatrixType| as follows:
+\begin{lstlisting}
+// setup SPAI preconditioner, purely CPU-based
+viennacl::linalg::spai_precond<MatrixType>
+ spai_cpu(M, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+
+//solve (e.g. using stab. Bi-conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(M,
+ rhs,
+ viennacl::linalg::bicgstab_tag(),
+ spai_cpu);
+\end{lstlisting}
+The first parameter denotes the residual norm threshold for the full matrix, the second parameter the maximum number of pattern updates, and the third
+parameter is the threshold for the residual of each minimization problem.
+
+For GPU-matrices, only parts of the setup phase are computed on the CPU, because compute-intensive tasks can be carried out on the GPU:
+\begin{lstlisting}
+// setup SPAI preconditioner, GPU-assisted
+viennacl::linalg::spai_precond<GPUMatrixType>
+ spai_gpu(vcl_matrix, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+
+//solve (e.g. using conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(vcl_matrix,
+ vcl_rhs,
+ viennacl::linalg::bicgstab_tag(),
+ spai_gpu);
+\end{lstlisting}
+The \lstinline|GPUMatrixType| is typically a \lstinline|viennacl::compressed_matrix| type.
+
+For symmetric matrices, FSPAI can be used with the conjugate gradient solver:
+\begin{lstlisting}
+viennacl::linalg::fspai_precond<MatrixType> fspai_cpu(M, viennacl::linalg::fspai_tag());
+
+//solve (e.g. using stab. Bi-conjugate gradient solver)
+vcl_result = viennacl::linalg::solve(M,
+ rhs,
+ viennacl::linalg::cg_tag(),
+ fspai_cpu);
+\end{lstlisting}
+Our experience is that FSPAI is typically more efficient than SPAI when applied to the same matrix, both in computational effort and in terms of convergence
+acceleration of the iterative solvers.
+
+\NOTE{At present, there is no GPU-accelerated FSPAI included in {\ViennaCL}.}
+
+Note that FSPAI depends on the ordering of the unknowns, thus bandwidth reduction algorithms may be employed first, cf.~Sec.~\ref{sec:bandwidth-reduction}.
+
+
+\section{Fast Fourier Transform}
+\NOTE{The fast Fourier transform is experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+Since there is no standardized complex type in {\OpenCL} at the time of the release of {\ViennaCLversion}, vectors need to be set up with real- and imaginary
+part before computing a fast Fourier tranform (FFT). In order to store complex numbers $z_0$, $z_1$, etc.~in a \lstinline|viennacl::vector|, say \lstinline|v|,
+the real and imaginary parts are mapped to even and odd entries of \lstinline|v| respectively: \lstinline|v[0] = Real(z_0)|, \lstinline|v[1] = Imag(z_0)|,
+\lstinline|v[2] = Real(z_1)|, \lstinline|v[3] = Imag(z_1)|, etc.
+
+The FFT of \lstinline|v| can then be computed either by writing to a second vector \lstinline|output| or by directly writing the result to \lstinline|v|
+\begin{lstlisting}
+ viennacl::fft(v, output);
+ viennacl::inplace_fft(v);
+\end{lstlisting}
+Conversely, the inverse FFT is computed as
+\begin{lstlisting}
+ viennacl::ifft(v, output);
+ viennacl::inplace_ifft(v);
+\end{lstlisting}
+
+\NOTE{In {\ViennaCLversion} the FFT with complexity $N \log N$ is computed for vectors with a size of a power of two only. For other vector sizes, a standard
+discrete Fourier transform with complexity $N^2$ is employed. This is subject to change in future versions.}
+
+\section{Bandwidth Reduction} \label{sec:bandwidth-reduction}
+\NOTE{Bandwidth reduction algorithms are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+The bandwidth of a sparse matrix is defined as the maximum difference of the indices of nonzero entries in a row, taken over all rows. A low bandwidth
+typically allows for the use of efficient banded matrix solvers instead of iterative solvers. Moreover, better cache utilization as well as lower fill-in in
+LU-factorization based algorithms can be expected.
+
+For a given sparse matrix with large bandwidth, {\ViennaCL} provides routines for renumbering the unknowns such that the reordered system matrix shows much
+smaller bandwidth. Typical applications stem from the discretization of partial differential equations by means of the finite element or the finite difference
+method. The algorithms employed are as follows:
+\begin{itemize}
+ \item Classical Cuthill-McKee algorithm \cite{cuthill:reducing-bandwidth}
+ \item Modified Cuthill-McKee algorithm \cite{cuthill:reducing-bandwidth}
+ \item Gibbs-Poole-Stockmeyer algorithm, cf.~\cite{lewis:gps-algorithm}
+\end{itemize}
+The modified Cuthill-McKee algorithm also takes nodes with small, but not necessarily minimal degree as root node into account and may lead to better results
+than the classical Cuthill-McKee algorithm. A parameter $a \in [0,1]$ controls the number of nodes considered: All nodes with degree $d$ fulfilling
+\begin{align*}
+ d_{\min} \leq d \leq d_{\min} + a(d_{\max} - d_{\min})
+\end{align*}
+are considered, where $d_{\min}$ and $d_{\max}$ are the miminum and maximum nodal degrees in the graph. A second parameter \lstinline|gmax| specifies the
+number of additional root nodes considered.
+
+The algorithms are called for a \lstinline|matrix| of a type compatible with \lstinline|std::vector< std::map<int, double> >| by
+\begin{lstlisting}
+ r = viennacl::reorder(matrix, viennacl::cuthill_mckee_tag());
+ r = viennacl::reorder(matrix,
+ viennacl::advanced_cuthill_mckee_tag(a, gmax));
+ r = viennacl::reorder(matrix, viennacl::gibbs_poole_stockmeyer_tag());
+\end{lstlisting}
+and return the permutation array. In {\ViennaCLversion}, the user then needs to manually reorder the sparse matrix based on the permutation array. Example code
+can be found in \lstinline|examples/tutorial/bandwidth-reduction.cpp|.
diff --git a/doc/manual/changelogs.tex b/doc/manual/changelogs.tex
index fc6197d..39e6c63 100644
--- a/doc/manual/changelogs.tex
+++ b/doc/manual/changelogs.tex
@@ -1,6 +1,30 @@
\chapter*{Change Logs} \addcontentsline{toc}{chapter}{Change Logs}
+\section*{Version 1.2.x}
+
+\subsection*{Version 1.2.0}
+Many new features from the Google Summer of Code and the I$\mu$E Summer of Code enter this release.
+Due to their complexity, they are for the moment still in \textit{experimental} state (see the respective chapters for details) and are expected to reach maturity with the 1.3.0 release.
+Shorter release cycles are planned for the near future.
+\begin{itemize}
+ \item Added a bunch of algebraic multigrid preconditioner variants (contributed by Markus Wagner)
+ \item Added (factored) sparse approximate inverse preconditioner (SPAI, contributed by Nikolay Lukash)
+ \item Added fast Fourier transform (FFT) for vector sizes with a power of two, tandard Fourier transform for other sizes (contributed by Volodymyr Kysenko)
+ \item Additional structured matrix classes for circulant matrices, Hankel matrices, Toeplitz matrices and Vandermonde matrices (contributed by Volodymyr Kysenko)
+ \item Added reordering algorithms (Cuthill-McKee and Gibbs-Poole-Stockmeyer, contributed by Philipp Grabenweger)
+ \item Refurbished CMake build system (thanks to Michael Wild)
+ \item Added matrix and vector proxy objects for submatrix and subvector manipulation
+ \item Added (possibly GPU-assisted) QR factorization
+ \item Per default, a \lstinline|viennacl::ocl::context| now consists of one device only. The rationale is to provide better out-of-the-box support for machines with hybrid graphics (two GPUs), where one GPU may not be capable of double precision support.
+ \item Fixed problems with \lstinline|viennacl::compressed_matrix| which occurred if the number of rows and columns differed
+ \item Improved documentation for the case of multiple custom kernels within a program
+ \item Improved matrix-matrix multiplication kernels (may lead to up to 20 percent performance gains)
+ \item Fixed problems in GMRES for small matrices (dimensions smaller than the maximum number of Krylov vectors)
+\end{itemize}
+
+
+
\section*{Version 1.1.x}
\subsection*{Version 1.1.2}
diff --git a/doc/manual/contributors.tex b/doc/manual/contributors.tex
index b57eb20..b8f047b 100644
--- a/doc/manual/contributors.tex
+++ b/doc/manual/contributors.tex
@@ -5,22 +5,25 @@ Copyright {\copyright} 2010--2011, Institute for Microelectronics, Vienna Univer
\vspace{2.5cm}
-Main Contributors:\\
+\textit{Project Head:}\\
-Florian Rudolf\\
Karl Rupp\\
-Josef Weinbub\\
\vspace{2.5cm}
-Current Maintainers: \\
+\textit{Code Contributors:} \\
+Philipp Grabenweger\\
+Volodymyr Kysenko\\
+Nikolay Lukash\\
Florian Rudolf\\
-Karl Rupp\\
+Markus Wagner\\
Josef Weinbub\\
+Michael Wild
+
-\vspace{7.0cm}
+\vspace{5.0cm}
Institute for Microelectronics\newline
Vienna University of Technology\newline
diff --git a/doc/manual/cover.tex b/doc/manual/cover.tex
index 1e96f1f..49fbb40 100644
--- a/doc/manual/cover.tex
+++ b/doc/manual/cover.tex
@@ -2,7 +2,7 @@
\begin{titlepage}
\vspace*{3cm}
-\Huge{ViennaCL 1.1.2}
+\Huge{ViennaCL 1.2.0}
\rule[0.0cm]{9.5cm}{0.05cm}
\begin{flushright}
\Large{User Manual}
diff --git a/doc/manual/custom-kernels.tex b/doc/manual/custom-kernels.tex
index 0ae2db6..5ead68e 100644
--- a/doc/manual/custom-kernels.tex
+++ b/doc/manual/custom-kernels.tex
@@ -10,12 +10,10 @@ For custom algorithms the built-in functionality of {\ViennaCL} may not be suffi
\end{itemize}
A tutorial on this topic can be found at \texttt{examples/tutorial/custom-kernels.cpp}.
-\TIP{The interface for custom kernels was simplified considerably in {\ViennaCL} 1.1.0.}
-
\section{Setting up the Source Code}
The {\OpenCL} source code has to be provided as a string. One can either write the source code directly into a string within C++ files, or one can read the {\OpenCL} source from a file. For demonstration purposes, we write the source directly as a string constant:
\begin{lstlisting}
-const char * my_compute_kernel =
+const char * my_compute_program =
"__kernel void elementwise_prod(\n"
" __global const float * vec1,\n"
" __global const float * vec2, \n"
@@ -26,31 +24,38 @@ const char * my_compute_kernel =
" result[i] = vec1[i] * vec2[i];\n"
"};\n";
\end{lstlisting}
-The kernel takes three vector arguments \lstinline{vec1}, \lstinline{vec2} and \lstinline{result} and the vector length variable \lstinline{size}. The compute kernel computes the entry-wise product of the vectors \lstinline|vec1| and \lstinline|vec2| and writes the result to the vector \lstinline|result|. For more detailed explanation of the {\OpenCL} source code, please refer to the specification available at the Khronos group webpage \cite{khronoscl}.
+The kernel takes three vector arguments \lstinline{vec1}, \lstinline{vec2} and \lstinline{result} and the vector length variable \lstinline{size} abd computes the entry-wise product of the vectors \lstinline|vec1| and \lstinline|vec2| and writes the result to the vector \lstinline|result|. For more detailed explanation of the {\OpenCL} source code, please refer to the specification available at the Khronos group webpage \cite{khronoscl}.
\section{Compilation of the Source Code}
The source code in the string constant \lstinline{my_compute_kernel} has to be compiled to an {\OpenCL} program.
An {\OpenCL} program is a compilation unit and may contain several different compute kernels,
so one could also include another kernel function \lstinline{inplace_elementwise_prod} which writes the result directly to one of the two operands \lstinline{vec1} or \lstinline{vec2} in the same program.
\begin{lstlisting}
-viennacl::ocl::program & prog =
+viennacl::ocl::program & my_prog =
viennacl::ocl::current_context().add_program(my_compute_program,
"my_compute_program");
\end{lstlisting}
-The next step is to extract the kernel \lstinline|my_compute_kernel| from the compiled program:
+The next step is to register the kernel \lstinline|elementwise_prod| included in the compiled program:
\begin{lstlisting}
-viennacl::ocl::kernel & my_kernel = my_prog.add_kernel("elementwise_prod");
+my_prog.add_kernel("elementwise_prod");
+\end{lstlisting}
+Similarly, one proceeds with other kernels in the compiled program.
+The next step is to extract the kernel object \lstinline|my_kernel| from the compiled program:
+\begin{lstlisting}
+viennacl::ocl::kernel & my_kernel = my_prog.get_kernel("elementwise_prod");
\end{lstlisting}
Now, the kernel is set up to use the function \lstinline|elementwise_prod| compiled into the program \lstinline|my_prog|.
-\NOTE{Note that C++ references to kernels and programs may become invalid as other kernels or programs are added. This is the case at the first instantiation of an {\ViennaCL} object of a particular type. Therefore, first allocate the required {\ViennaCL} objects and compile/add all custom kernels, before you start passing references to programs or kernels around.}
+\NOTE{Note that C++ references to kernels and programs may become invalid as other kernels or programs are added.
+ Therefore, first allocate the required {\ViennaCL} objects and compile/add all custom kernels, before you start taking references to custom programs or kernels.}
-Instead of holding references to programs and kernels directly at compilation, one can obtain them at other places within the application source code by
+Instead of extracting references to programs and kernels directly at program compilation, one can obtain them at other places within the application source code by
\begin{lstlisting}
viennacl::ocl::program & prog =
viennacl::ocl::current_context().get_program("my_compute_program");
viennacl::ocl::kernel & my_kernel = my_prog.get_kernel("elementwise_prod");
\end{lstlisting}
+This simplifies application development considerably, since no program and kernel objects need to be passed around.
\section{Launching the Kernel}
Before launching the kernel, one may adjust the global and local work sizes (readers not familiar with that are encouraged to read the {\OpenCL} standard \cite{khronoscl}).
diff --git a/doc/manual/installation.tex b/doc/manual/installation.tex
index 0ff348e..1ba2c1d 100644
--- a/doc/manual/installation.tex
+++ b/doc/manual/installation.tex
@@ -23,7 +23,7 @@ have a recent version of {\CMake} installed.
To use {\ViennaCL}, the following prerequisites have to be fulfilled:
\begin{itemize}
\item A recent C++ compiler (e.g.~{\GCC} version 4.2.x or above and Visual C++
-2008 are known to work)
+2010 are known to work)
\item {\OpenCL}~\cite{khronoscl,nvidiacl} for accessing compute devices (GPUs);
see Section~\ref{opencllibs} for details.
(optional, since iterative solvers can also be used standalone with other libraries (\ublas, Eigen, MTL4))
@@ -95,7 +95,7 @@ installation process~\cite{atistreamdocu}.
{\OpenCL} library path to the \texttt{LD\_LIBRARY\_PATH} environment variable.
Otherwise, linker errors will occur as the required library cannot be found.}
-It is important to note that the AMD APP SDK does not provide \OpenCL
+It is important to note that the AMD APP SDK may not provide {\OpenCL}
certified double precision support~\cite{atidouble} on some CPUs and GPUs. In
\ViennaCL 1.0.x, double precision was only experimentally available in
{\ViennaCL} by defining one of the preprocessor constants
@@ -114,9 +114,7 @@ support is enabled by default -- provided that it is available on the device.
double precision using ATI Stream SDK v2.1.}
\subsection{INTEL OpenCL SDK} \label{sec:opencl-on-intel}
-At the time of this release, a beta-version of an {\OpenCL} SDK by INTEL is available.
-
-Even though the SDK is still in beta-state, {\ViennaCL} works fine with the INTEL OpenCL SDK on Windows and Linux.
+ {\ViennaCL} works fine with the INTEL OpenCL SDK on Windows and Linux.
The correct linker path is set automatically in \lstinline|CMakeLists.txt| when using the {\CMake} build system, cf.~Sec.~\ref{sec:viennacl-installation}.
@@ -133,23 +131,30 @@ on your system. The other dependencies are listed in Tab.~\ref{tab:tutorial-depe
\begin{tabular}{l|l}
Tutorial No. & Dependencies\\
\hline
+\texttt{tutorial/amg.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/bandwidth-reduction.cpp} & - \\
\texttt{tutorial/blas1.cpp} & {\OpenCL} \\
\texttt{tutorial/blas2.cpp} & {\OpenCL}, {\ublas} \\
\texttt{tutorial/blas3.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/custom-kernels.cpp} & {\OpenCL} \\
+\texttt{tutorial/custom-context.cpp} & {\OpenCL} \\
+\texttt{tutorial/fft.cpp} & {\OpenCL} \\
\texttt{tutorial/iterative.cpp} & {\OpenCL}, {\ublas} \\
-\texttt{tutorial/iterative-ublas.cpp} & {\ublas} \\
-\texttt{tutorial/iterative-eigen.cpp} & {\Eigen} \\
-\texttt{tutorial/iterative-mtl4.cpp} & {\MTL} \\
-\texttt{tutorial/custom-kernel.cpp} & {\OpenCL} \\
-\texttt{tutorial/custom-context.cpp} & {\OpenCL} \\
-\texttt{tutorial/eigen-with-viennacl.cpp} & {\OpenCL}, {\Eigen} \\
-\texttt{tutorial/mtl4-with-viennacl.cpp} & {\OpenCL}, {\MTL} \\
-\texttt{tutorial/viennacl-info.cpp} & {\OpenCL} \\
-\texttt{benchmarks/vector.cpp} & {\OpenCL} \\
-\texttt{benchmarks/sparse.cpp} & {\OpenCL}, {\ublas} \\
-\texttt{benchmarks/solver.cpp} & {\OpenCL}, {\ublas} \\
-\texttt{benchmarks/opencl.cpp} & {\OpenCL} \\
+\texttt{tutorial/iterative-ublas.cpp} & {\ublas} \\
+\texttt{tutorial/iterative-eigen.cpp} & {\Eigen} \\
+\texttt{tutorial/iterative-mtl4.cpp} & {\MTL} \\
+\texttt{tutorial/matrix-range.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/qr.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/spai.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/eigen-with-viennacl.cpp} & {\OpenCL}, {\Eigen} \\
+\texttt{tutorial/mtl4-with-viennacl.cpp} & {\OpenCL}, {\MTL} \\
+\texttt{tutorial/vector-range.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{tutorial/viennacl-info.cpp} & {\OpenCL} \\
\texttt{benchmarks/blas3.cpp} & {\OpenCL} \\
+\texttt{benchmarks/opencl.cpp} & {\OpenCL} \\
+\texttt{benchmarks/solver.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{benchmarks/sparse.cpp} & {\OpenCL}, {\ublas} \\
+\texttt{benchmarks/vector.cpp} & {\OpenCL} \\
\end{tabular}
\caption{Dependencies for the examples in the \texttt{examples/} folder}
\label{tab:tutorial-dependencies}
@@ -182,6 +187,13 @@ to build the examples. If some of the dependencies in Tab.~\ref{tab:tutorial-dep
\TIP{Speed up the building process by using jobs, e.g. \keyword{make -j4}.}
+Execute the examples from the \lstinline|build/| folder as follows:
+\begin{lstlisting}
+ $> examples/tutorial/blas1
+ $> examples/benchmarks/vectorbench
+\end{lstlisting}
+Note that all benchmark executables carry the suffix \lstinline|bench|.
+
\subsection{Mac OS X}
\label{apple}
The tools mentioned in Section \ref{dependencies} are available on
@@ -207,7 +219,9 @@ In the following the procedure is outlined for \texttt{Visual Studio}: Assuming
\item Set the {\ViennaCL} base directory as source directory.
\item Set the \texttt{build/} directory as build directory.
\item Click on 'Configure' and select the appropriate generator (e.g.~\texttt{Visual Studio 9 2008})
-\item Click on 'Generate' (you may need to click on 'Configure' one more time before you can click on 'Generate')
+\item If either Boost or some OpenCL paths cannot be found, please select the advanced view and provide the required paths manually
+\item Click again an 'Configure'
+\item Click on 'Generate'
\item The project files can now be found in the {\ViennaCL} build directory, where they can be opened and compiled with Visual Studio (provided that the include and library paths are set correctly, see Sec.~\ref{sec:viennacl-installation}).
\end{itemize}
diff --git a/doc/manual/introduction.tex b/doc/manual/introduction.tex
index 474247c..bd64996 100644
--- a/doc/manual/introduction.tex
+++ b/doc/manual/introduction.tex
@@ -13,10 +13,11 @@ implemented (confer for example to the book of Y.~Saad \cite{saad-iterative-solu
\item Stabilized BiConjugate Gradient (BiCGStab)
\item Generalized Minimum Residual (GMRES)
\end{itemize}
-An optional ILU preconditioner can be used, which is in {\ViennaCLversion}
-precomputed and applied on a single CPU core and may thus not lead to overall
-performance gains over a purely CPU based implementation.
-Moreover, a Jacobi and a row-scaling preconditioner are available, which can be executed directly in parallel on the {\OpenCL} device.
+%An optional ILU preconditioner can be used, which is in {\ViennaCLversion}
+%precomputed and applied on a single CPU core and may thus not lead to overall
+%performance gains over a purely CPU based implementation.
+%Moreover, a Jacobi and a row-scaling preconditioner are available, which can be executed directly in parallel on the {\OpenCL} device.
+A number of preconditioners is provided with {\ViennaCLversion} in order to improve convergence of these solvers, cf.~Chap.~\ref{chap:algorithms}.
The solvers and preconditioners can also be used with different
libraries due to their generic implementation. At present, it is possible to
@@ -32,7 +33,7 @@ using either the AMD Accelerated Parallel Processing SDK (formerly ATI Stream SD
\NOTE{Double precision arithmetic on GPUs is only possible if it is provided by the GPU. There is no double precision emulation in {\ViennaCL}.}
-\NOTE{Double precision arithmetic using the ATI Stream SDK or AMD APP SDK is not yet fully
+\NOTE{Double precision arithmetic using the ATI Stream SDK or AMD APP SDK may not be fully
OpenCL-certified. See Sec.~\ref{sec:opencl-on-ati} for details.}
\begin{table}[tb]
@@ -84,9 +85,9 @@ ATI FirePro V87XX & ok & essentially ok \\
ATI FirePro V88XX & ok & essentially ok \\
\end{tabular}
\caption{Available arithmetics in {\ViennaCL} provided by selected GPUs. At the
-release of {\ViennaCLversion}, the Stream SDK from AMD/ATI does not comply to
+release of {\ViennaCLversion}, the Stream SDK (APP SDK) from AMD/ATI may not comply to
the {\OpenCL} standard for double precision extensions, but we have not observed
-problems with the latest version of Stream SDK. Support for AMD devices is now
+problems with the latest version of the SDK. Support for AMD devices is now
per default enabled in {\ViennaCL}, see Sec.~\ref{sec:opencl-on-ati}.}
\label{tab:double-precision-GPUs}
\end{center}
diff --git a/doc/manual/types.tex b/doc/manual/types.tex
index a85308a..eff1245 100644
--- a/doc/manual/types.tex
+++ b/doc/manual/types.tex
@@ -239,6 +239,103 @@ listed.}
\end{center}
\end{table}
+\section{Structured Matrix Types}
+
+\NOTE{Structured matrix types are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may be included in
+future releases!}
+
+There are a number of structured dense matrices for which some algorithms such as matrix-vector products can be computed with much lower computational effort
+than for the general dense matrix case. In the following, four structured dense matrix types included in {\ViennaCL} are discussed.
+Example code can be found in \lstinline|examples/tutorial/structured-matrices.cpp|.
+
+\subsection{Circulant Matrix}
+A circulant matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{ccccc}
+ c_0 & c_{n-1} & \ldots & c_2 & c_1 \\
+ c_1 & c_0 & c_{n-1} & & c_2 \\
+ \vdots & c_1 & c_0 & \ddots & \vdots \\
+ c_{n-2} & & \ddots & \ddots & c_{n-1} \\
+ c_{n-1} & c_{n-2} & \hdots & c_1 & c_0 \\
+ \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/circulant_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::circulant_matrix circ_mat(s, s);
+\end{lstlisting}
+The \lstinline|circulant_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|circ_mat(1,2)| will automatically update \lstinline|circ_mat(0,1)|, \lstinline|circ_mat(2,3)| and
+so on.
+
+
+\subsection{Hankel Matrix}
+A Hankel matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{cccc}
+ a & b & c & d \\
+ b & c & d & e \\
+ c & d & e & f \\
+ d & e & f & g \\
+ \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/hankel_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::hankel_matrix hank_mat(s, s);
+\end{lstlisting}
+The \lstinline|hankel_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|hank_mat(1,2)| in the example above will also update \lstinline|hank_mat(0,3)|,
+\lstinline|hank_mat(2,1)| and
+\lstinline|hank_mat(3,0)|.
+
+\subsection{Toeplitz Matrix}
+A Toeplitz matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{cccc}
+ a & b & c & d \\
+ e & a & b & c \\
+ f & e & a & b \\
+ g & f & e & a \\
+ \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/toeplitz_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::toeplitz_matrix toep_mat(s, s);
+\end{lstlisting}
+The \lstinline|toeplitz_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|toep_mat(1,2)| in the example above will also update \lstinline|toep_mat(0,1)| and
+\lstinline|toep_mat(2,3)|.
+
+
+\subsection{Vandermonde Matrix}
+A Vandermonde matrix is a matrix of the form
+\begin{align*}
+ \left( \begin{array}{ccccc}
+ 1 & \alpha_1 & \alpha_1^2 & \ldots & \alpha_1^{n-1} \\
+ 1 & \alpha_2 & \alpha_2^2 & \ldots & \alpha_2^{n-1} \\
+ 1 & \vdots & \vdots & \vdots \\
+ 1 & \alpha_m & \alpha_m^2 & \ldots & \alpha_m^{n-1} \\
+ \end{array} \right)
+\end{align*}
+and available in {\ViennaCL} via
+\begin{lstlisting}
+ #include "viennacl/vandermonde_matrix.hpp"
+
+ std::size_t s = 42;
+ viennacl::vandermonde_matrix vand_mat(s, s);
+\end{lstlisting}
+The \lstinline|vandermonde_matrix| type can be manipulated in the same way as the dense matrix type \lstinline|matrix|, but restrictions apply. For
+example, the addition or subtraction of two Vandermonde matrices does not yield another Vandermonde matrix. Note that writing to a single element of
+the matrix is structure-preserving, e.g.~changing \lstinline|vand_mat(1,2)| in the example above will automatically update \lstinline|vand_mat(1,3)|,
+\lstinline|vand_mat(1,4)|, etc.
\section{Sparse Matrix Types}
@@ -362,4 +459,37 @@ The use of \texttt{coordinate\_matrix$<$T, alignment$>$} is similar to that of t
\subsubsection{Members}
The interface is described in Tab.~\ref{tab:coordinate-matrix-interface}.
-\TIP{In {\ViennaCLversion} the use of \lstinline|compressed\_matrix| over \lstinline|coordinate\_matrix| is encouraged due to better performance!}
\ No newline at end of file
+\TIP{In {\ViennaCLversion} the use of \lstinline|compressed\_matrix| over \lstinline|coordinate\_matrix| is encouraged due to better performance!}
+
+
+
+\section{Proxies}
+\NOTE{Matrix and vector proxies are experimental in {\ViennaCLversion}. Interface changes as well as considerable performance improvements may
+be included in future releases!}
+
+Similar to {\ublas}, {\ViennaCL} provides \lstinline|range| objects in order to conveniently manipulate dense submatrices and vectors. The functionality is
+provided in the headers \lstinline|viennacl/vector_proxy.hpp| and \lstinline|viennacl/matrix_proxy.hpp| respectively.
+A range refers to a contiguous integer interval and is set up as
+\begin{lstlisting}
+ std::size_t lower_bound = 1;
+ std::size_t upper_bound = 7;
+ viennacl::range r(lower_bound, upper_bound);
+\end{lstlisting}
+In order to address a subvector of a vector \lstinline|v| and a submatrix of a matrix \lstinline|M|, the proxy objects \lstinline|v_sub| and \lstinline|M_sub|
+are created as follows:
+\begin{lstlisting}
+ typedef viennacl::vector<ScalarType> VectorType;
+ typedef viennacl::matrix<ScalarType, viennacl::row_major> MatrixType;
+
+ viennacl::vector_range<VCLVectorType> v_sub(v, r);
+ viennacl::matrix_range<VCLMatrixType> M_sub(M, r, r);
+\end{lstlisting}
+The proxy objects can now be manipulated in the same way as vectors and dense matrices. In particular, operations such as vector proxy additions and matrix
+additions work as usual, e.g.
+\begin{lstlisting}
+ vcl_sub += vcl_sub;
+ M_sub += M_sub;
+\end{lstlisting}
+ Submatrix-Submatrix products are computed in the same manner and are handy for many block-based linear algebra algorithms.
+
+\TIP{Example code can be found in \lstinline|examples/tutorial/vector-range.cpp| and \lstinline|examples/tutorial/matrix-range.cpp|}
\ No newline at end of file
diff --git a/doc/manual/viennacl.bib b/doc/manual/viennacl.bib
index 5282ca3..18987a0 100644
--- a/doc/manual/viennacl.bib
+++ b/doc/manual/viennacl.bib
@@ -84,3 +84,61 @@
URL = {http://code.google.com/p/pugixml/}
}
% -----------------------------------------------
+ at book{trottenberg:multigrid,
+ author = {Trottenberg, U. and Oosterlee, C. and Sch{\"{u}}ller, A.},
+ title = {{Multigrid}},
+ publisher = {Academic Press},
+ year = {2001}
+}
+
+ at InBook{yang:parallel-amg,
+ title = {{Numerical Solutions of Partial Differential Equations on Parallel Computers}},
+ chapter = {{Parallel Algebraic Multigrid Methods - High Performance Preconditioners}},
+ publisher = {Springer},
+ year = {2006},
+ author = {Yang, U.~M.},
+ editor = {Bruaset, A.~M. and Tveito, A.},
+ series = {Lecture Notes in Computational Science and Engineering},
+ pages = {209-236},
+}
+
+
+ at article{grote:spai,
+ author = {Grote, M.~J. and Huckle, T.},
+ title = {{Parallel Preconditioning with Sparse Approximate Inverses}},
+ journal = {SIAM J.~Sci.~Comp.},
+ vol = {18},
+ no = {3},
+ pages = {838--853},
+ year = {1997},
+}
+
+ at article{huckle:fspai,
+ author = {Huckle, T.},
+ title = {{Factorized Sparse Approximate Inverses for Preconditioning}},
+ journal = {J.~Supercomput.},
+ vol = {25},
+ pages = {109--117},
+ year = {2003},
+}
+
+ at inproceedings{cuthill:reducing-bandwidth,
+ author = {Cuthill, E. and McKee, J.},
+ title = {Reducing the bandwidth of sparse symmetric matrices},
+ booktitle = {Proceedings of the 1969 24th National Conference},
+ series = {ACM '69},
+ year = {1969},
+ pages = {157--172},
+ publisher = {ACM},
+}
+
+ at article{lewis:gps-algorithm,
+ author = {Lewis, J.~G.},
+ title = {Algorithm 582: The Gibbs-Poole-Stockmeyer and Gibbs-King Algorithms for Reordering Sparse Matrices},
+ journal = {ACM Trans. Math. Softw.},
+ volume = {8},
+ issue = {2},
+ year = {1982},
+ pages = {190--194},
+ publisher = {ACM},
+}
diff --git a/doc/manual/viennacl.tex b/doc/manual/viennacl.tex
index d6d8cd8..fbc4f36 100644
--- a/doc/manual/viennacl.tex
+++ b/doc/manual/viennacl.tex
@@ -56,8 +56,8 @@
\newcommand{\OpenMP} {\texttt{OpenMP}}
\newcommand{\OpenCL} {\texttt{OpenCL}}
\newcommand{\ViennaCL} {\texttt{ViennaCL}}
-\newcommand{\ViennaCLversion} {\texttt{ViennaCL 1.1.2}}
-\newcommand{\ViennaCLminorversion} {\texttt{ViennaCL 1.1.x}}
+\newcommand{\ViennaCLversion} {\texttt{ViennaCL 1.2.0}}
+\newcommand{\ViennaCLminorversion} {\texttt{ViennaCL 1.2.x}}
\newcommand{\Boost} {\texttt{Boost}}
\newcommand{\ublas} {\texttt{ublas}}
\newcommand{\Eigen} {\texttt{Eigen}}
diff --git a/doc/viennacl.pdf b/doc/viennacl.pdf
deleted file mode 100644
index c5e7bbc..0000000
Binary files a/doc/viennacl.pdf and /dev/null differ
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
new file mode 100644
index 0000000..3690af1
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,12 @@
+set(EXAMPLES_TESTDATA
+ testdata/mat65k.mtx
+ testdata/README
+ testdata/result65025.txt
+ testdata/rhs65025.txt)
+foreach(f IN LISTS EXAMPLES_TESTDATA)
+ configure_file(${f} "${CMAKE_CURRENT_BINARY_DIR}/${f}" COPYONLY)
+endforeach()
+
+add_subdirectory(tutorial)
+add_subdirectory(benchmarks)
+add_subdirectory(parameters)
diff --git a/examples/benchmarks/CMakeLists.txt b/examples/benchmarks/CMakeLists.txt
new file mode 100644
index 0000000..bfc5636
--- /dev/null
+++ b/examples/benchmarks/CMakeLists.txt
@@ -0,0 +1,13 @@
+foreach(bench blas3 opencl vector)
+ add_executable(${bench}bench ${bench}.cpp)
+ target_link_libraries(${bench}bench ${OPENCL_LIBRARIES})
+endforeach()
+
+if(ENABLE_UBLAS)
+ include_directories(${Boost_INCLUDE_DIRS})
+ foreach(bench sparse solver)
+ add_executable(${bench}bench ${bench}.cpp)
+ target_link_libraries(${bench}bench ${OPENCL_LIBRARIES})
+ endforeach()
+endif()
+
diff --git a/examples/benchmarks/benchmark-utils.hpp b/examples/benchmarks/benchmark-utils.hpp
index df6bf9b..05a5032 100644
--- a/examples/benchmarks/benchmark-utils.hpp
+++ b/examples/benchmarks/benchmark-utils.hpp
@@ -1,6 +1,22 @@
#ifndef _BENCHMARK_UTILS_HPP_
#define _BENCHMARK_UTILS_HPP_
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
#include <iostream>
void printOps(double num_ops, double exec_time)
diff --git a/examples/benchmarks/blas3.cpp b/examples/benchmarks/blas3.cpp
index c6febb0..f7bc073 100644
--- a/examples/benchmarks/blas3.cpp
+++ b/examples/benchmarks/blas3.cpp
@@ -1,20 +1,23 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//disable debug mechanisms to have a fair comparison with ublas:
-#define NDEBUG
-//#define VIENNACL_BUILD_INFO
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
//
// include necessary system headers
diff --git a/examples/benchmarks/io.hpp b/examples/benchmarks/io.hpp
index 4970e3d..96b1d12 100644
--- a/examples/benchmarks/io.hpp
+++ b/examples/benchmarks/io.hpp
@@ -1,5 +1,21 @@
-#ifndef _VECTOR_IO_HPP_
-#define _VECTOR_IO_HPP_
+#ifndef VECTOR_IO_HPP_
+#define VECTOR_IO_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/matrix_sparse.hpp>
diff --git a/examples/benchmarks/opencl.cpp b/examples/benchmarks/opencl.cpp
index ad3db1a..776fdca 100644
--- a/examples/benchmarks/opencl.cpp
+++ b/examples/benchmarks/opencl.cpp
@@ -1,19 +1,22 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-//#define VIENNACL_BUILD_INFO
-#define NDEBUG
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
#include "viennacl/scalar.hpp"
#include "viennacl/vector.hpp"
diff --git a/examples/benchmarks/qr.cpp b/examples/benchmarks/qr.cpp
new file mode 100644
index 0000000..598100e
--- /dev/null
+++ b/examples/benchmarks/qr.cpp
@@ -0,0 +1,107 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#define VIENNACL_HAVE_UBLAS
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <sys/time.h>
+#include <time.h>
+#include "benchmark-utils.hpp"
+/*#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"*/
+#include "viennacl/linalg/qr.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+
+//typedef viennacl::compressed_matrix<float> SparseMatrix;
+using namespace boost::numeric::ublas;
+//using namespace viennacl::linalg;
+
+
+int main (int argc, const char * argv[])
+{
+ typedef float ScalarType;
+ typedef boost::numeric::ublas::matrix<ScalarType, boost::numeric::ublas::column_major> MatrixType;
+ typedef boost::numeric::ublas::vector<ScalarType> VectorType;
+ Timer timer;
+ double elapsed;
+
+ size_t rows = 1800;
+ size_t cols = 1800;
+ double num_ops_qr = 2.0 * cols * cols * (rows - cols/3.0);
+ double num_ops_recovery = 4.0 * (rows*rows*cols - rows*cols*cols + cols*cols*cols);
+
+ MatrixType A(rows, cols);
+ MatrixType Q(rows, rows);
+ MatrixType R(rows, cols);
+
+ for (size_t i=0; i<rows; ++i)
+ {
+ for (size_t j=0; j<cols; ++j)
+ {
+ A(i,j) = 1.0 + (i + 1)*(j+1);
+ R(i,j) = 0.0;
+ }
+ for (size_t j=0; j<rows; ++j)
+ {
+ Q(i,j) = 0.0;
+ }
+ }
+
+ //std::cout << "A: " << A << std::endl;
+ timer.start();
+ std::vector<ScalarType> betas = viennacl::linalg::block_qr(A);
+ //std::vector<ScalarType> betas = viennacl::linalg::qr(A);
+ elapsed = timer.get();
+ std::cout << "Time for QR on CPU: " << elapsed << std::endl;
+ std::cout << "Estimated GFLOPS: " << 1e-9 * num_ops_qr/ elapsed << std::endl;
+
+
+ //std::cout << "Inplace QR-factored A: " << A << std::endl;
+
+ timer.start();
+ viennacl::linalg::recoverQ(A, betas, Q, R);
+ elapsed = timer.get();
+ std::cout << "Time for Q-recovery on CPU: " << elapsed << std::endl;
+ std::cout << "Estimated GFLOPS: " << 1e-9 * num_ops_recovery / elapsed << std::endl;
+
+ /*std::cout << "R after recovery: " << R << std::endl;
+ std::cout << "Q after recovery: " << Q << std::endl;
+ std::cout << "Q*Q^T: " << prod(Q, trans(Q)) << std::endl;
+
+ std::cout << "Q * R: " << prod(Q, R) << std::endl;*/
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/examples/benchmarks/solver.cpp b/examples/benchmarks/solver.cpp
index 0939c8f..562b102 100644
--- a/examples/benchmarks/solver.cpp
+++ b/examples/benchmarks/solver.cpp
@@ -1,18 +1,22 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#define NDEBUG
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/ublas/operation_sparse.hpp>
@@ -46,7 +50,7 @@ using namespace boost::numeric;
*
*/
-#define BENCHMARK_RUNS 5
+#define BENCHMARK_RUNS 1
template <typename ScalarType>
@@ -97,7 +101,7 @@ void run_solver(MatrixType const & matrix, VectorType const & rhs, VectorType co
std::cout << "Relative residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(rhs) << std::endl;
std::cout << "Estimated rel. residual: " << solver.error() << std::endl;
std::cout << "Iterations: " << solver.iters() << std::endl;
- result -=ref_result;
+ result -= ref_result;
std::cout << "Relative deviation from result: " << viennacl::linalg::norm_2(result) / viennacl::linalg::norm_2(ref_result) << std::endl;
}
@@ -213,7 +217,6 @@ int run_benchmark()
exec_time = timer.get();
std::cout << "ViennaCL time: " << exec_time << std::endl;
-
///////////////////////////////////////////////////////////////////////////////
////////////////////// CG solver //////////////////
///////////////////////////////////////////////////////////////////////////////
@@ -261,7 +264,6 @@ int run_benchmark()
// std::cout << "------- CG solver (row scaling preconditioner) via ViennaCL, coordinate_matrix ----------" << std::endl;
// run_solver(vcl_coordinate_matrix, vcl_vec2, vcl_result, cg_solver, vcl_row_scaling, cg_ops);
-
///////////////////////////////////////////////////////////////////////////////
////////////////////// BiCGStab solver //////////////////
///////////////////////////////////////////////////////////////////////////////
@@ -306,13 +308,12 @@ int run_benchmark()
// std::cout << "------- CG solver row scaling preconditioner) via ViennaCL, coordinate_matrix ----------" << std::endl;
// run_solver(vcl_coordinate_matrix, vcl_vec2, vcl_result, bicgstab_solver, vcl_row_scaling, bicgstab_ops);
-
///////////////////////////////////////////////////////////////////////////////
/////////////////////// GMRES solver ///////////////////
///////////////////////////////////////////////////////////////////////////////
- long gmres_ops = static_cast<long>(solver_iters * (ublas_matrix.nnz() + solver_iters + 7) * ublas_vec2.size());
+ long gmres_ops = static_cast<long>(solver_iters * (ublas_matrix.nnz() + (solver_iters * 2 + 7) * ublas_vec2.size()));
viennacl::linalg::gmres_tag gmres_solver(solver_tolerance, solver_iters, solver_krylov_dim);
diff --git a/examples/benchmarks/sparse.cpp b/examples/benchmarks/sparse.cpp
index dc3b821..6832715 100644
--- a/examples/benchmarks/sparse.cpp
+++ b/examples/benchmarks/sparse.cpp
@@ -1,19 +1,23 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//#define VIENNACL_BUILD_INFO
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
#define VIENNACL_HAVE_UBLAS 1
diff --git a/examples/benchmarks/vector.cpp b/examples/benchmarks/vector.cpp
index 286d840..f079b7e 100644
--- a/examples/benchmarks/vector.cpp
+++ b/examples/benchmarks/vector.cpp
@@ -1,19 +1,23 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//#define VIENNACL_BUILD_INFO
-//#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
#include "viennacl/scalar.hpp"
#include "viennacl/vector.hpp"
diff --git a/examples/parameters/CMakeLists.txt b/examples/parameters/CMakeLists.txt
new file mode 100644
index 0000000..823439e
--- /dev/null
+++ b/examples/parameters/CMakeLists.txt
@@ -0,0 +1,25 @@
+include_directories(${PROJECT_SOURCE_DIR}/external)
+
+foreach(par vector matrix sparse parameter_reader)
+ set(n ${par}params)
+ if(par STREQUAL parameter_reader)
+ set(n ${par})
+ endif()
+ add_executable(${n} ${par}.cpp
+ ${PROJECT_SOURCE_DIR}/external/pugixml/src/pugixml.cpp)
+ target_link_libraries(${n} ${OPENCL_LIBRARIES})
+endforeach()
+
+if(ENABLE_VIENNAPROFILER)
+ include_directories(${VIENNAPROFILER_INCLUDE_DIRS})
+ foreach(par vector matrix sparse)
+ add_executable(${par}params_vprof ${par}.cpp
+ ${PROJECT_SOURCE_DIR}/external/pugixml/src/pugixml.cpp)
+ target_link_libraries(${par}params_vprof
+ ${OPENCL_LIBRARIES} ${VIENNAPROFILER_LIBRARIES})
+ endforeach()
+
+ set_target_properties(vectorparams_vprof matrixparams_vprof
+ sparseparams_vprof
+ PROPERTIES COMPILE_DEFINITIONS ENABLE_VIENNAPROFILER)
+endif()
diff --git a/examples/parameters/benchmark-utils.hpp b/examples/parameters/benchmark-utils.hpp
index df6bf9b..05a5032 100644
--- a/examples/parameters/benchmark-utils.hpp
+++ b/examples/parameters/benchmark-utils.hpp
@@ -1,6 +1,22 @@
#ifndef _BENCHMARK_UTILS_HPP_
#define _BENCHMARK_UTILS_HPP_
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
#include <iostream>
void printOps(double num_ops, double exec_time)
diff --git a/examples/parameters/common.hpp b/examples/parameters/common.hpp
index f050c66..a7cb07e 100644
--- a/examples/parameters/common.hpp
+++ b/examples/parameters/common.hpp
@@ -1,18 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-
- file changelog: - May 28, 2010 New from scratch for first release
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
////////////////////// some functions that aid testing to follow /////////////////////////////////
diff --git a/examples/parameters/common_vprof.hpp b/examples/parameters/common_vprof.hpp
index cd596f8..bd9548c 100644
--- a/examples/parameters/common_vprof.hpp
+++ b/examples/parameters/common_vprof.hpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
#include "viennaprofiler/mysqldb.hpp"
#include "viennaprofiler/timer/precisetimer.hpp"
diff --git a/examples/parameters/matrix.cpp b/examples/parameters/matrix.cpp
index 6371b6e..c4591b3 100644
--- a/examples/parameters/matrix.cpp
+++ b/examples/parameters/matrix.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
#include "viennacl/scalar.hpp"
diff --git a/examples/parameters/matrix_functors.hpp b/examples/parameters/matrix_functors.hpp
index 2d35fbe..726b474 100644
--- a/examples/parameters/matrix_functors.hpp
+++ b/examples/parameters/matrix_functors.hpp
@@ -1,18 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-
- file changelog: - May 28, 2010 New from scratch for first release
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/////////// direct solver kernels ////////////////
diff --git a/examples/parameters/parameter_reader.cpp b/examples/parameters/parameter_reader.cpp
index f838cd6..e251b0b 100644
--- a/examples/parameters/parameter_reader.cpp
+++ b/examples/parameters/parameter_reader.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//#define VIENNACL_DEBUG_ALL
//#define NDEBUG
diff --git a/examples/parameters/sparse.cpp b/examples/parameters/sparse.cpp
index 8ceb8c3..2181387 100644
--- a/examples/parameters/sparse.cpp
+++ b/examples/parameters/sparse.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
#include "viennacl/scalar.hpp"
#include "viennacl/vector.hpp"
diff --git a/examples/parameters/vector.cpp b/examples/parameters/vector.cpp
index 465950f..99ef6a7 100644
--- a/examples/parameters/vector.cpp
+++ b/examples/parameters/vector.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
#include "viennacl/scalar.hpp"
diff --git a/examples/parameters/vector_functors.hpp b/examples/parameters/vector_functors.hpp
index b8f8363..78c2072 100644
--- a/examples/parameters/vector_functors.hpp
+++ b/examples/parameters/vector_functors.hpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
diff --git a/examples/tutorial/CMakeLists.txt b/examples/tutorial/CMakeLists.txt
new file mode 100644
index 0000000..e4fd771
--- /dev/null
+++ b/examples/tutorial/CMakeLists.txt
@@ -0,0 +1,27 @@
+foreach(tut bandwidth-reduction blas1 custom-kernels custom-context fft viennacl-info)
+ add_executable(${tut} ${tut}.cpp)
+ target_link_libraries(${tut} ${OPENCL_LIBRARIES})
+endforeach()
+
+if(ENABLE_UBLAS)
+ include_directories(${Boost_INCLUDE_DIRS})
+ foreach(tut amg blas2 blas3 iterative iterative-ublas matrix-range qr spai structured-matrices vector-range)
+ add_executable(${tut} ${tut}.cpp)
+ target_link_libraries(${tut} ${OPENCL_LIBRARIES})
+ endforeach()
+endif()
+
+if(ENABLE_EIGEN)
+ include_directories(${EIGEN_INCLUDE_DIR})
+ add_executable(iterative-eigen iterative-eigen.cpp)
+ add_executable(eigen-with-viennacl
+ eigen-with-viennacl.cpp)
+ target_link_libraries(eigen-with-viennacl ${OPENCL_LIBRARIES})
+endif()
+
+if(ENABLE_MTL4)
+ foreach(tut iterative-mtl4 mtl4-with-viennacl)
+ add_executable(${tut} ${tut}.cpp)
+ target_link_libraries(${tut} ${OPENCL_LIBRARIES})
+ endforeach()
+endif()
diff --git a/examples/tutorial/Random.hpp b/examples/tutorial/Random.hpp
index 3094e1c..613c937 100644
--- a/examples/tutorial/Random.hpp
+++ b/examples/tutorial/Random.hpp
@@ -1,3 +1,20 @@
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
#ifndef _RANDOM_HPP_
#define _RANDOM_HPP_
diff --git a/examples/tutorial/amg.cpp b/examples/tutorial/amg.cpp
new file mode 100755
index 0000000..ffd4b37
--- /dev/null
+++ b/examples/tutorial/amg.cpp
@@ -0,0 +1,236 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG //without NDEBUG the performance of sparse ublas matrices is poor.
+ #define NDEBUG
+#endif
+
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/operation_sparse.hpp>
+
+#define VIENNACL_HAVE_UBLAS 1
+
+#define SOLVER_ITERS 2500
+//#define SCALAR float
+#define SCALAR double
+
+//#define SOLVER_TOLERANCE 1e-5
+#define SOLVER_TOLERANCE 1e-9
+
+#include "viennacl/vector.hpp"
+#include "viennacl/coordinate_matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/bicgstab.hpp"
+#include "viennacl/io/matrix_market.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+
+#include "viennacl/linalg/amg.hpp"
+
+#include <iostream>
+#include <vector>
+#include <ctime>
+#include "vector-io.hpp"
+
+
+template <typename MatrixType, typename VectorType, typename SolverTag, typename PrecondTag>
+void run_solver(MatrixType const & matrix, VectorType const & rhs, VectorType const & ref_result, SolverTag const & solver, PrecondTag const & precond)
+{
+ VectorType result(rhs);
+ VectorType residual(rhs);
+
+ result = viennacl::linalg::solve(matrix, rhs, solver, precond);
+ residual -= viennacl::linalg::prod(matrix, result);
+ std::cout << " > Relative residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(rhs) << std::endl;
+ std::cout << " > Iterations: " << solver.iters() << std::endl;
+ result -= ref_result;
+ std::cout << " > Relative deviation from result: " << viennacl::linalg::norm_2(result) / viennacl::linalg::norm_2(ref_result) << std::endl;
+}
+
+template <typename ScalarType>
+void run_amg(viennacl::linalg::cg_tag & cg_solver,
+ boost::numeric::ublas::vector<ScalarType> & ublas_vec,
+ boost::numeric::ublas::vector<ScalarType> & ublas_result,
+ boost::numeric::ublas::compressed_matrix<ScalarType> & ublas_matrix,
+ viennacl::vector<ScalarType> & vcl_vec,
+ viennacl::vector<ScalarType> & vcl_result,
+ viennacl::compressed_matrix<ScalarType> & vcl_compressed_matrix,
+ std::string info,
+ viennacl::linalg::amg_tag & amg_tag)
+{
+
+ viennacl::linalg::amg_precond<boost::numeric::ublas::compressed_matrix<ScalarType> > ublas_amg = viennacl::linalg::amg_precond<boost::numeric::ublas::compressed_matrix<ScalarType> > (ublas_matrix, amg_tag);
+ boost::numeric::ublas::vector<ScalarType> avgstencil;
+ unsigned int coarselevels = amg_tag.get_coarselevels();
+
+ std::cout << "-- CG with AMG preconditioner, " << info << " --" << std::endl;
+
+ std::cout << " * Setup phase (ublas types)..." << std::endl;
+
+ // Coarse level measure might have been changed during setup. Reload!
+ ublas_amg.tag().set_coarselevels(coarselevels);
+ ublas_amg.setup();
+
+ std::cout << " * Operator complexity: " << ublas_amg.calc_complexity(avgstencil) << std::endl;
+
+ amg_tag.set_coarselevels(coarselevels);
+ viennacl::linalg::amg_precond<viennacl::compressed_matrix<ScalarType> > vcl_amg = viennacl::linalg::amg_precond<viennacl::compressed_matrix<ScalarType> > (vcl_compressed_matrix, amg_tag);
+ std::cout << " * Setup phase (ViennaCL types)..." << std::endl;
+ vcl_amg.tag().set_coarselevels(coarselevels);
+ vcl_amg.setup();
+
+ std::cout << " * CG solver (ublas types)..." << std::endl;
+ run_solver(ublas_matrix, ublas_vec, ublas_result, cg_solver, ublas_amg);
+
+ std::cout << " * CG solver (ViennaCL types)..." << std::endl;
+ run_solver(vcl_compressed_matrix, vcl_vec, vcl_result, cg_solver, vcl_amg);
+
+}
+
+int main()
+{
+ //
+ // Print some device info
+ //
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << " Device Info" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+
+ std::cout << viennacl::ocl::current_device().info() << std::endl;
+
+ typedef float ScalarType; // feel free to change this to double if supported by your device
+
+
+ //
+ // Set up the matrices and vectors for the iterative solvers (cf. iterative.cpp)
+ //
+ boost::numeric::ublas::vector<ScalarType> ublas_vec, ublas_result;
+ boost::numeric::ublas::compressed_matrix<ScalarType> ublas_matrix;
+
+ viennacl::linalg::cg_tag cg_solver;
+ viennacl::linalg::amg_tag amg_tag;
+ viennacl::linalg::amg_precond<boost::numeric::ublas::compressed_matrix<ScalarType> > ublas_amg;
+
+ // Read matrix
+ #ifdef _MSC_VER
+ if (!viennacl::io::read_matrix_market_file(ublas_matrix, "../../examples/testdata/mat65k.mtx"))
+ #else
+ if (!viennacl::io::read_matrix_market_file(ublas_matrix, "../examples/testdata/mat65k.mtx"))
+ #endif
+ {
+ std::cout << "Error reading Matrix file" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ // Set up rhs and result vector
+ #ifdef _MSC_VER
+ if (!readVectorFromFile("../../examples/testdata/rhs65025.txt", ublas_vec))
+ #else
+ if (!readVectorFromFile("../examples/testdata/rhs65025.txt", ublas_vec))
+ #endif
+ {
+ std::cout << "Error reading RHS file" << std::endl;
+ return 0;
+ }
+
+ #ifdef _MSC_VER
+ if (!readVectorFromFile("../../examples/testdata/result65025.txt", ublas_result))
+ #else
+ if (!readVectorFromFile("../examples/testdata/result65025.txt", ublas_result))
+ #endif
+ {
+ std::cout << "Error reading Result file" << std::endl;
+ return 0;
+ }
+
+ viennacl::vector<ScalarType> vcl_vec(ublas_vec.size());
+ viennacl::vector<ScalarType> vcl_result(ublas_vec.size());
+ viennacl::compressed_matrix<ScalarType> vcl_compressed_matrix(ublas_vec.size(), ublas_vec.size());
+
+ // Copy to GPU
+ viennacl::copy(ublas_matrix, vcl_compressed_matrix);
+ viennacl::copy(ublas_vec, vcl_vec);
+ viennacl::copy(ublas_result, vcl_result);
+
+ //
+ // Run solver without preconditioner
+ //
+ std::cout << "-- CG solver (CPU, no preconditioner) --" << std::endl;
+ run_solver(ublas_matrix, ublas_vec, ublas_result, cg_solver, viennacl::linalg::no_precond());
+
+ std::cout << "-- CG solver (GPU, no preconditioner) --" << std::endl;
+ run_solver(vcl_compressed_matrix, vcl_vec, vcl_result, cg_solver, viennacl::linalg::no_precond());
+
+ //
+ // With AMG Preconditioner RS+DIRECT
+ //
+ amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS, // coarsening strategy
+ VIENNACL_AMG_INTERPOL_DIRECT, // interpolation strategy
+ 0.25, // strength of dependence threshold
+ 0.2, // interpolation weight
+ 0.67, // jacobi smoother weight
+ 3, // presmoothing steps
+ 3, // postsmoothing steps
+ 0); // number of coarse levels to be used (0: automatically use as many as reasonable)
+ run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS COARSENING, DIRECT INTERPOLATION", amg_tag);
+
+ //
+ // With AMG Preconditioner RS+CLASSIC
+ //
+ amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS, VIENNACL_AMG_INTERPOL_CLASSIC, 0.25, 0.2, 0.67, 3, 3, 0);
+ run_amg ( cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS COARSENING, CLASSIC INTERPOLATION", amg_tag);
+
+ //
+ // With AMG Preconditioner ONEPASS+DIRECT
+ //
+ amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_ONEPASS, VIENNACL_AMG_INTERPOL_DIRECT,0.25, 0.2, 0.67, 3, 3, 0);
+ run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "ONEPASS COARSENING, DIRECT INTERPOLATION", amg_tag);
+
+ //
+ // With AMG Preconditioner RS0+DIRECT
+ //
+ amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS0, VIENNACL_AMG_INTERPOL_DIRECT, 0.25, 0.2, 0.67, 3, 3, 0);
+ run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS0 COARSENING, DIRECT INTERPOLATION", amg_tag);
+
+ //
+ // With AMG Preconditioner RS3+DIRECT
+ //
+ amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_RS3, VIENNACL_AMG_INTERPOL_DIRECT, 0.25, 0.2, 0.67, 3, 3, 0);
+ run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "RS3 COARSENING, DIRECT INTERPOLATION", amg_tag);
+
+ //
+ // With AMG Preconditioner AG
+ //
+ amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_AG, VIENNACL_AMG_INTERPOL_AG, 0.08, 0, 0.67, 3, 3, 0);
+ run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "AG COARSENING, AG INTERPOLATION", amg_tag);
+
+ //
+ // With AMG Preconditioner SA
+ //
+ amg_tag = viennacl::linalg::amg_tag(VIENNACL_AMG_COARSE_AG, VIENNACL_AMG_INTERPOL_SA, 0.08, 0.67, 0.67, 3, 3, 0);
+ run_amg (cg_solver, ublas_vec, ublas_result, ublas_matrix, vcl_vec, vcl_result, vcl_compressed_matrix, "AG COARSENING, SA INTERPOLATION",amg_tag);
+
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/bandwidth-reduction.cpp b/examples/tutorial/bandwidth-reduction.cpp
new file mode 100644
index 0000000..52c4297
--- /dev/null
+++ b/examples/tutorial/bandwidth-reduction.cpp
@@ -0,0 +1,269 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <map>
+#include <vector>
+#include <deque>
+#include <cmath>
+
+#include "viennacl/misc/bandwidth_reduction.hpp"
+
+/*
+* Tutorial: Matrix bandwidth reduction algorithms
+*/
+
+
+//
+// Part 1: Helper functions
+//
+
+// Reorders a matrix according to a previously generated node
+// number permutation vector r
+std::vector< std::map<int, double> > reorder_matrix(std::vector< std::map<int, double> > const & matrix, std::vector<int> const & r)
+{
+ std::vector< std::map<int, double> > matrix2(r.size());
+ std::vector<std::size_t> r2(r.size());
+
+ for (std::size_t i = 0; i < r.size(); i++)
+ r2[r[i]] = i;
+
+ for (std::size_t i = 0; i < r.size(); i++)
+ for (std::map<int, double>::const_iterator it = matrix[r[i]].begin(); it != matrix[r[i]].end(); it++)
+ matrix2[i][r2[it->first]] = it->second;
+
+ return matrix2;
+}
+
+// Calculates the bandwidth of a matrix
+int calc_bw(std::vector< std::map<int, double> > const & matrix)
+{
+ int bw = 0;
+
+ for (std::size_t i = 0; i < matrix.size(); i++)
+ for (std::map<int, double>::const_iterator it = matrix[i].begin(); it != matrix[i].end(); it++)
+ bw = std::max(bw, std::abs(static_cast<int>(i - it->first)));
+
+ return bw;
+}
+
+
+// Calculate the bandwidth of a reordered matrix
+int calc_reordered_bw(std::vector< std::map<int, double> > const & matrix, std::vector<int> const & r)
+{
+ std::vector<int> r2(r.size());
+ int bw = 0;
+
+ for (std::size_t i = 0; i < r.size(); i++)
+ r2[r[i]] = i;
+
+ for (std::size_t i = 0; i < r.size(); i++)
+ for (std::map<int, double>::const_iterator it = matrix[r[i]].begin(); it != matrix[r[i]].end(); it++)
+ bw = std::max(bw, std::abs(static_cast<int>(i - r2[it->first])));
+
+ return bw;
+}
+
+
+// Generates a random permutation by Knuth shuffle algorithm
+// reference: http://en.wikipedia.org/wiki/Knuth_shuffle
+// (URL taken on July 2nd, 2011)
+std::vector<int> generate_random_reordering(int n)
+{
+ std::vector<int> r(n);
+ int tmp;
+ int j;
+
+ for (int i = 0; i < n; i++)
+ r[i] = i;
+
+ for (int i = 0; i < n - 1; i++)
+ {
+ j = i + static_cast<std::size_t>((static_cast<double>(rand()) / static_cast<double>(RAND_MAX)) * (n - 1 - i));
+ if (j != i)
+ {
+ tmp = r[i];
+ r[i] = r[j];
+ r[j] = tmp;
+ }
+ }
+
+ return r;
+}
+
+
+// function for the generation of a three-dimensional mesh incidence matrix
+// l: x dimension
+// m: y dimension
+// n: z dimension
+// tri: true for tetrahedral mesh, false for cubic mesh
+// return value: matrix of size l * m * n
+std::vector< std::map<int, double> > gen_3d_mesh_matrix(int l, int m, int n, bool tri)
+{
+ std::vector< std::map<int, double> > matrix;
+ int s;
+ int ind;
+ int ind1;
+ int ind2;
+
+ s = l * m * n;
+ matrix.resize(s);
+ for (int i = 0; i < l; i++)
+ {
+ for (int j = 0; j < m; j++)
+ {
+ for (int k = 0; k < n; k++)
+ {
+ ind = i + l * j + l * m * k;
+
+ matrix[ind][ind] = 1.0;
+
+ if (i > 0)
+ {
+ ind2 = ind - 1;
+ matrix[ind][ind2] = 1.0;
+ matrix[ind2][ind] = 1.0;
+ }
+ if (j > 0)
+ {
+ ind2 = ind - l;
+ matrix[ind][ind2] = 1.0;
+ matrix[ind2][ind] = 1.0;
+ }
+ if (k > 0)
+ {
+ ind2 = ind - l * m;
+ matrix[ind][ind2] = 1.0;
+ matrix[ind2][ind] = 1.0;
+ }
+
+ if (tri)
+ {
+ if (i < l - 1 && j < m - 1)
+ {
+ if ((i + j + k) % 2 == 0)
+ {
+ ind1 = ind;
+ ind2 = ind + 1 + l;
+ }
+ else
+ {
+ ind1 = ind + 1;
+ ind2 = ind + l;
+ }
+ matrix[ind1][ind2] = 1.0;
+ matrix[ind2][ind1] = 1.0;
+ }
+ if (i < l - 1 && k < n - 1)
+ {
+ if ((i + j + k) % 2 == 0)
+ {
+ ind1 = ind;
+ ind2 = ind + 1 + l * m;
+ }
+ else
+ {
+ ind1 = ind + 1;
+ ind2 = ind + l * m;
+ }
+ matrix[ind1][ind2] = 1.0;
+ matrix[ind2][ind1] = 1.0;
+ }
+ if (j < m - 1 && k < n - 1)
+ {
+ if ((i + j + k) % 2 == 0)
+ {
+ ind1 = ind;
+ ind2 = ind + l + l * m;
+ }
+ else
+ {
+ ind1 = ind + l;
+ ind2 = ind + l * m;
+ }
+ matrix[ind1][ind2] = 1.0;
+ matrix[ind2][ind1] = 1.0;
+ }
+ }
+ }
+ }
+ }
+
+ return matrix;
+}
+
+
+//
+// Part 2: Tutorial code
+//
+
+
+
+int main(int argc, char *argv[])
+{
+ srand(42);
+ std::cout << "-- Generating matrix --" << std::endl;
+ std::size_t dof_per_dim = 64; //number of grid points per coordinate direction
+ std::size_t n = dof_per_dim * dof_per_dim * dof_per_dim; //total number of unknowns
+ std::vector< std::map<int, double> > matrix = gen_3d_mesh_matrix(dof_per_dim, dof_per_dim, dof_per_dim, false); //If last parameter is 'true', a tetrahedral grid instead of a hexahedral grid is used.
+
+ //
+ // Shuffle the generated matrix
+ //
+ std::vector<int> r = generate_random_reordering(n);
+ std::vector< std::map<int, double> > matrix2 = reorder_matrix(matrix, r);
+
+
+ //
+ // Print some statistics:
+ //
+ std::cout << " * Unknowns: " << n << std::endl;
+ std::cout << " * Initial bandwidth: " << calc_bw(matrix) << std::endl;
+ std::cout << " * Randomly reordered bandwidth: " << calc_bw(matrix2) << std::endl;
+
+ //
+ // Reorder using Cuthill-McKee algorithm
+ //
+ std::cout << "-- Cuthill-McKee algorithm --" << std::endl;
+ r = viennacl::reorder(matrix2, viennacl::cuthill_mckee_tag());
+ std::cout << " * Reordered bandwidth: " << calc_reordered_bw(matrix2, r) << std::endl;
+
+ //
+ // Reorder using advanced Cuthill-McKee algorithm
+ //
+ std::cout << "-- Advanced Cuthill-McKee algorithm --" << std::endl;
+ double a = 0.0;
+ double gmax = 1;
+ r = viennacl::reorder(matrix2, viennacl::advanced_cuthill_mckee_tag(a, gmax));
+ std::cout << " * Reordered bandwidth: " << calc_reordered_bw(matrix2, r) << std::endl;
+
+ //
+ // Reorder using Gibbs-Poole-Stockmeyer algorithm
+ //
+ std::cout << "-- Gibbs-Poole-Stockmeyer algorithm --" << std::endl;
+ r = viennacl::reorder(matrix2, viennacl::gibbs_poole_stockmeyer_tag());
+ std::cout << " * Reordered bandwidth: " << calc_reordered_bw(matrix2, r) << std::endl;
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/tutorial/blas1.cpp b/examples/tutorial/blas1.cpp
index 611131d..9c51c37 100644
--- a/examples/tutorial/blas1.cpp
+++ b/examples/tutorial/blas1.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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>
@@ -198,6 +200,6 @@ int main()
//
std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
- return 0;
+ return EXIT_SUCCESS;
}
diff --git a/examples/tutorial/blas2.cpp b/examples/tutorial/blas2.cpp
index 7d39f7b..bc7c5f1 100644
--- a/examples/tutorial/blas2.cpp
+++ b/examples/tutorial/blas2.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
diff --git a/examples/tutorial/blas3.cpp b/examples/tutorial/blas3.cpp
index 7c95ef3..94dbbff 100644
--- a/examples/tutorial/blas3.cpp
+++ b/examples/tutorial/blas3.cpp
@@ -1,19 +1,24 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//disable debug mechanisms to have a fair comparison with ublas:
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
//
// include necessary system headers
@@ -119,7 +124,6 @@ int main()
exec_time = timer.get();
std::cout << " - Execution time: " << exec_time << std::endl;
-
//
// Now iterate over all OpenCL devices in the context and compute the matrix-matrix product
//
@@ -154,7 +158,6 @@ int main()
for (unsigned int i = 0; i < ublas_C1.size1(); ++i)
for (unsigned int j = 0; j < ublas_C1.size2(); ++j)
ublas_C1(i,j) = stl_C[i * ublas_C1.size2() + j];
-
std::cout << " - Checking result... ";
bool check_ok = true;
diff --git a/examples/tutorial/blas3range.cpp b/examples/tutorial/blas3range.cpp
new file mode 100644
index 0000000..1dfcf01
--- /dev/null
+++ b/examples/tutorial/blas3range.cpp
@@ -0,0 +1,211 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+//disable debug mechanisms to have a fair comparison with ublas:
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
+
+//
+// include necessary system headers
+//
+#include <iostream>
+
+//
+// ublas includes
+//
+#include <boost/numeric/ublas/io.hpp>
+#include <boost/numeric/ublas/triangular.hpp>
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+#include <boost/numeric/ublas/io.hpp>
+
+
+// Must be set if you want to use ViennaCL algorithms on ublas objects
+#define VIENNACL_HAVE_UBLAS 1
+
+//
+// ViennaCL includes
+//
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix_proxy.hpp"
+
+// Some helper functions for this tutorial:
+#include "Random.hpp"
+#include "vector-io.hpp"
+
+#include "../benchmarks/benchmark-utils.hpp"
+
+/*
+* Tutorial: BLAS level 3 functionality
+*
+*/
+
+#define BLAS3_MATRIX_SIZE 1500
+
+using namespace boost::numeric;
+
+int main()
+{
+ typedef float ScalarType;
+
+ Timer timer;
+ double exec_time;
+
+ //
+ // Set up some ublas objects
+ //
+ ublas::matrix<ScalarType> ublas_A(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+ ublas::matrix<ScalarType, ublas::column_major> ublas_B(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+ ublas::matrix<ScalarType> ublas_C(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+ ublas::matrix<ScalarType> ublas_C1(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+ ublas::matrix<ScalarType> ublas_C2(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+
+ //
+ // One alternative: Put the matrices into a contiguous block of memory (allows to use viennacl::fast_copy(), avoiding temporary memory)
+ //
+ std::vector<ScalarType> stl_A(BLAS3_MATRIX_SIZE * BLAS3_MATRIX_SIZE);
+ std::vector<ScalarType> stl_B(BLAS3_MATRIX_SIZE * BLAS3_MATRIX_SIZE);
+ std::vector<ScalarType> stl_C(BLAS3_MATRIX_SIZE * BLAS3_MATRIX_SIZE);
+
+ //
+ // Fill the matrix
+ //
+ for (unsigned int i = 0; i < ublas_A.size1(); ++i)
+ for (unsigned int j = 0; j < ublas_A.size2(); ++j)
+ {
+ ublas_A(i,j) = random<ScalarType>();
+ stl_A[i*ublas_A.size2() + j] = ublas_A(i,j);
+ }
+
+ for (unsigned int i = 0; i < ublas_B.size1(); ++i)
+ for (unsigned int j = 0; j < ublas_B.size2(); ++j)
+ {
+ ublas_B(i,j) = random<ScalarType>();
+ stl_B[i + j*ublas_B.size1()] = ublas_B(i,j);
+ }
+
+ ublas::range ublas_r1(1, BLAS3_MATRIX_SIZE-1);
+ ublas::range ublas_r2(2, BLAS3_MATRIX_SIZE-2);
+ ublas::matrix_range< ublas::matrix<ScalarType> > ublas_A_sub(ublas_A, ublas_r1, ublas_r2);
+ ublas::matrix_range< ublas::matrix<ScalarType, ublas::column_major> > ublas_B_sub(ublas_B, ublas_r2, ublas_r1);
+ ublas::matrix_range< ublas::matrix<ScalarType> > ublas_C_sub(ublas_C, ublas_r1, ublas_r1);
+
+ //
+ // Set up some ViennaCL objects
+ //
+ //viennacl::ocl::set_context_device_type(0, viennacl::ocl::gpu_tag()); //uncomment this is you wish to use GPUs only
+ viennacl::matrix<ScalarType> vcl_A(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+ viennacl::matrix<ScalarType, viennacl::column_major> vcl_B(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+ viennacl::matrix<ScalarType> vcl_C(BLAS3_MATRIX_SIZE, BLAS3_MATRIX_SIZE);
+
+ viennacl::range vcl_r1(1, BLAS3_MATRIX_SIZE-1);
+ viennacl::range vcl_r2(2, BLAS3_MATRIX_SIZE-2);
+ viennacl::matrix_range< viennacl::matrix<ScalarType> > vcl_A_sub(vcl_A, vcl_r1, vcl_r2);
+ viennacl::matrix_range< viennacl::matrix<ScalarType, viennacl::column_major> > vcl_B_sub(vcl_B, vcl_r2, vcl_r1);
+ viennacl::matrix_range< viennacl::matrix<ScalarType> > vcl_C_sub(vcl_C, vcl_r1, vcl_r1);
+
+ ublas_C.clear();
+ viennacl::copy(ublas_C, vcl_C);
+
+ /////////////////////////////////////////////////
+ //////////// Matrix-matrix products /////////////
+ /////////////////////////////////////////////////
+
+ //
+ // Compute reference product using ublas:
+ //
+ std::cout << "--- Computing matrix-matrix product using ublas ---" << std::endl;
+ timer.start();
+ ublas_C_sub = ublas::prod(ublas_A_sub, ublas_B_sub);
+ exec_time = timer.get();
+ std::cout << " - Execution time: " << exec_time << std::endl;
+
+ //std::cout << ublas_C << std::endl;
+
+ //
+ // Now iterate over all OpenCL devices in the context and compute the matrix-matrix product
+ //
+ std::cout << std::endl << "--- Computing matrix-matrix product on each available compute device using ViennaCL ---" << std::endl;
+ std::vector<viennacl::ocl::device> devices = viennacl::ocl::current_context().devices();
+ for (size_t i=0; i<devices.size(); ++i)
+ {
+ viennacl::ocl::current_context().switch_device(devices[i]);
+ std::cout << " - Device Name: " << viennacl::ocl::current_device().name() << std::endl;
+
+ //viennacl::copy(ublas_A, vcl_A);
+ //viennacl::copy(ublas_B, vcl_B);
+ viennacl::fast_copy(&(stl_A[0]),
+ &(stl_A[0]) + stl_A.size(),
+ vcl_A);
+ viennacl::fast_copy(&(stl_B[0]),
+ &(stl_B[0]) + stl_B.size(),
+ vcl_B);
+ vcl_C_sub = viennacl::linalg::prod(vcl_A_sub, vcl_B_sub);
+ viennacl::ocl::get_queue().finish();
+ timer.start();
+ vcl_C_sub = viennacl::linalg::prod(vcl_A_sub, vcl_B_sub);
+ viennacl::ocl::get_queue().finish();
+ exec_time = timer.get();
+ std::cout << " - Execution time on device (no setup time included): " << exec_time << std::endl;
+ std::cout << " - GFLOPs: " << (vcl_A.size1() / 1000.0) * (vcl_A.size2() / 1000.0) * (vcl_B.size2() / 1000.0) / exec_time << std::endl;
+
+ //std::cout << vcl_C << std::endl;
+
+ //
+ // Verify the result
+ //
+ //viennacl::copy(vcl_C, ublas_C1);
+ viennacl::fast_copy(vcl_C, &(stl_C[0]));
+ for (unsigned int i = 0; i < ublas_C1.size1(); ++i)
+ for (unsigned int j = 0; j < ublas_C1.size2(); ++j)
+ ublas_C1(i,j) = stl_C[i * ublas_C1.size2() + j];
+
+ std::cout << " - Checking result... ";
+ bool check_ok = true;
+ for (unsigned int i = 0; i < ublas_A.size1(); ++i)
+ {
+ for (unsigned int j = 0; j < ublas_A.size2(); ++j)
+ {
+ if ( fabs(ublas_C1(i,j) - ublas_C(i,j)) / ublas_C(i,j) > 1e-4 )
+ {
+ check_ok = false;
+ break;
+ }
+ }
+ if (!check_ok)
+ break;
+ }
+ if (check_ok)
+ std::cout << "[OK]" << std::endl << std::endl;
+ else
+ std::cout << "[FAILED]" << std::endl << std::endl;
+
+ }
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+ return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/custom-context.cpp b/examples/tutorial/custom-context.cpp
index 4473d78..602b567 100644
--- a/examples/tutorial/custom-context.cpp
+++ b/examples/tutorial/custom-context.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
diff --git a/examples/tutorial/custom-kernels.cpp b/examples/tutorial/custom-kernels.cpp
index d359180..135db1b 100644
--- a/examples/tutorial/custom-kernels.cpp
+++ b/examples/tutorial/custom-kernels.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
@@ -38,15 +40,15 @@
//
-// A custom compute kernel which computes an elementwise product of two vectors
+// Custom compute kernels which compute an elementwise product/division of two vectors
// Input: v1 ... vector
// v2 ... vector
// Output: result ... vector
//
// Algorithm: set result[i] <- v1[i] * v2[i]
-// (in MATLAB notation this is something like 'result = v1 .* v2');
+// or result[i] <- v1[i] / v2[i]
+// (in MATLAB notation this is something like 'result = v1 .* v2' and 'result = v1 ./ v2');
//
-
const char * my_compute_program =
"__kernel void elementwise_prod(\n"
" __global const float * vec1,\n"
@@ -56,9 +58,17 @@ const char * my_compute_program =
"{ \n"
" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
" result[i] = vec1[i] * vec2[i];\n"
+"};\n\n"
+"__kernel void elementwise_div(\n"
+" __global const float * vec1,\n"
+" __global const float * vec2, \n"
+" __global float * result,\n"
+" unsigned int size) \n"
+"{ \n"
+" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
+" result[i] = vec1[i] / vec2[i];\n"
"};\n";
-
int main()
{
typedef float ScalarType;
@@ -67,9 +77,11 @@ int main()
// Initialize OpenCL vectors:
//
unsigned int vector_size = 10;
+ viennacl::scalar<ScalarType> s = 1.0; //dummy
viennacl::vector<ScalarType> vec1(vector_size);
viennacl::vector<ScalarType> vec2(vector_size);
- viennacl::vector<ScalarType> result(vector_size);
+ viennacl::vector<ScalarType> result_mul(vector_size);
+ viennacl::vector<ScalarType> result_div(vector_size);
//
// fill the operands vec1 and vec2:
@@ -82,36 +94,36 @@ int main()
//
// Set up the OpenCL program given in my_compute_kernel:
- // A program is one compilation unit an can hold many different compute kernels.
+ // A program is one compilation unit and can hold many different compute kernels.
//
viennacl::ocl::program & my_prog = viennacl::ocl::current_context().add_program(my_compute_program, "my_compute_program");
+ my_prog.add_kernel("elementwise_prod"); //register elementwise product kernel
+ my_prog.add_kernel("elementwise_div"); //register elementwise division kernel
//
- // Get the kernel 'elementwise_prod' from the program 'my_program'
+ // Now we can get the kernels from the program 'my_program'.
+ // (Note that first all kernels need to be registered via add_kernel() before get_kernel() can be called,
+ // otherwise existing references might be invalidated)
//
- viennacl::ocl::kernel & my_kernel = my_prog.add_kernel("elementwise_prod");
+ viennacl::ocl::kernel & my_kernel_mul = my_prog.get_kernel("elementwise_prod");
+ viennacl::ocl::kernel & my_kernel_div = my_prog.get_kernel("elementwise_div");
//
// Launch the kernel with 'vector_size' threads in one work group
+ // Note that size_t might differ between host and device. Thus, a cast to cl_uint is necessary for the forth argument.
//
- viennacl::ocl::enqueue(my_kernel(vec1, vec2, result, static_cast<cl_uint>(vec1.size()))); //Note that size_t might differ between host and device. Thus, a cast to cl_uint is necessary here.
-
- //
- // Hint: The three codelines above can be written in a single statement:
- //
- //viennacl::ocl::enqueue(viennacl::ocl::get_context().add_program(my_compute_program,
- // "my_compute_program").add_kernel("elementwise_prod")(vec1,
- // vec2,
- // result,
- // vec1.size()));
+ viennacl::ocl::enqueue(my_kernel_mul(vec1, vec2, result_mul, static_cast<cl_uint>(vec1.size())));
+ viennacl::ocl::enqueue(my_kernel_div(vec1, vec2, result_div, static_cast<cl_uint>(vec1.size())));
//
// Print the result:
//
std::cout << " vec1: " << vec1 << std::endl;
std::cout << " vec2: " << vec2 << std::endl;
- std::cout << "vec1 .* vec2: " << result << std::endl;
- std::cout << "norm_2(vec1 .* vec2): " << viennacl::linalg::norm_2(result) << std::endl;
+ std::cout << "vec1 .* vec2: " << result_mul << std::endl;
+ std::cout << "vec1 /* vec2: " << result_div << std::endl;
+ std::cout << "norm_2(vec1 .* vec2): " << viennacl::linalg::norm_2(result_mul) << std::endl;
+ std::cout << "norm_2(vec1 /* vec2): " << viennacl::linalg::norm_2(result_div) << std::endl;
//
// That's it.
diff --git a/examples/tutorial/eigen-with-viennacl.cpp b/examples/tutorial/eigen-with-viennacl.cpp
index 839b7da..5c1aa3b 100644
--- a/examples/tutorial/eigen-with-viennacl.cpp
+++ b/examples/tutorial/eigen-with-viennacl.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
diff --git a/examples/tutorial/fft.cpp b/examples/tutorial/fft.cpp
new file mode 100644
index 0000000..f0a6002
--- /dev/null
+++ b/examples/tutorial/fft.cpp
@@ -0,0 +1,81 @@
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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 <vector>
+#include <cmath>
+#include <complex>
+#include <fstream>
+
+// include basic scalar and vector types of ViennaCL
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix.hpp"
+
+// include FFT routines
+#include "viennacl/fft.hpp"
+
+/*
+* Tutorial: FFT functionality (experimental in ViennaCL 1.2.x)
+*/
+
+int main()
+{
+ // Change this type definition to double if your gpu supports that
+ typedef float ScalarType;
+
+ // Create vectors of eight complex values (represented as pairs of floating point values: [real_0, imag_0, real_1, imag_1, etc.])
+ viennacl::vector<ScalarType> input_vec(16);
+ viennacl::vector<ScalarType> output_vec(16);
+
+ // Fill with values (use viennacl::copy() for larger data!)
+ for (std::size_t i=0; i<input_vec.size(); ++i)
+ {
+ if (i%2 == 0)
+ input_vec(i) = ScalarType(i/2); // even indices represent real part
+ else
+ input_vec(i) = 0; // odd indices represent imaginary part
+ }
+
+ // Print the vector
+ std::cout << "input_vec: " << input_vec << std::endl;
+
+ // Compute FFT and store result in 'output_vec'
+ std::cout << "Computing FFT..." << std::endl;
+ viennacl::fft(input_vec, output_vec);
+
+ // Compute FFT and store result directly in 'input_vec'
+ viennacl::inplace_fft(input_vec);
+
+ // Print result
+ std::cout << "input_vec: " << input_vec << std::endl;
+ std::cout << "output_vec: " << output_vec << std::endl;
+
+ std::cout << "Computing inverse FFT..." << std::endl;
+ viennacl::ifft(input_vec, output_vec); // either store result into output_vec
+ viennacl::inplace_ifft(input_vec); // or compute in-place
+
+ std::cout << "input_vec: " << input_vec << std::endl;
+ std::cout << "output_vec: " << output_vec << std::endl;
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/tutorial/iterative-eigen.cpp b/examples/tutorial/iterative-eigen.cpp
index 1a5f09d..85ccf66 100644
--- a/examples/tutorial/iterative-eigen.cpp
+++ b/examples/tutorial/iterative-eigen.cpp
@@ -1,23 +1,28 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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>
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
//
// Include Eigen headers
diff --git a/examples/tutorial/iterative-mtl4.cpp b/examples/tutorial/iterative-mtl4.cpp
index 64c651a..0b13760 100644
--- a/examples/tutorial/iterative-mtl4.cpp
+++ b/examples/tutorial/iterative-mtl4.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
@@ -42,42 +44,72 @@
#include "Random.hpp"
#include "vector-io.hpp"
-int main(int, char *[])
+//
+// The following function is just a hel
+//
+/*template <typename MTLMatrixType>
+void read_system(MTLMatrixType & matrix)
{
+ typedef typename MTLMatrixType::value_type value_type;
- mtl::compressed2D<double> mtl4_matrix;
- mtl4_matrix.change_dim(65025, 65025);
- set_to_zero(mtl4_matrix);
+ std::vector<std::map<unsigned int, value_type> > stl_matrix(mtl::num_rows(matrix), mtl::num_cols(matrix));
- mtl::dense_vector<double> mtl4_rhs(65025, 0.0);
- mtl::dense_vector<double> mtl4_result(65025, 0.0);
- mtl::dense_vector<double> mtl4_ref_result(65025, 0.0);
- mtl::dense_vector<double> mtl4_residual(65025, 0.0);
+ viennacl::tools::sparse_matrix_adapter<value_type> adapted_stl_matrix(stl_matrix);
- //
- // Read system from file
- //
#ifdef _MSC_VER
- if (!viennacl::io::read_matrix_market_file(mtl4_matrix, "../../examples/testdata/mat65k.mtx"))
+ if (!viennacl::io::read_matrix_market_file(adapted_stl_matrix, "../../examples/testdata/mat65k.mtx"))
#else
- if (!viennacl::io::read_matrix_market_file(mtl4_matrix, "../examples/testdata/mat65k.mtx"))
+ if (!viennacl::io::read_matrix_market_file(adapted_stl_matrix, "../examples/testdata/mat65k.mtx"))
#endif
{
std::cout << "Error reading Matrix file" << std::endl;
return 0;
}
- std::cout << "done reading matrix" << std::endl;
- #ifdef _MSC_VER
- if (!readVectorFromFile("../../examples/testdata/rhs65025.txt", mtl4_rhs))
- #else
- if (!readVectorFromFile("../examples/testdata/rhs65025.txt", mtl4_rhs))
- #endif
+ // Now shift to MTL matrix:
+
+ mtl::matrix::inserter< MTLMatrixType > ins(matrix);
+ typedef typename mtl::Collection<MTLMatrixType>::value_type ValueType;
+
+ typedef viennacl::tools::sparse_matrix_adapter<value_type>::iterator1 Iterator1;
+ for (Iterator1 it = adapted_stl_matrix.begin1();
+ it != adapted_stl_matrix.end1();
+ ++it)
{
- std::cout << "Error reading RHS file" << std::endl;
- return 0;
+ for (typename Iterator1::iterator it2 = it.begin();
+ it2 != it.end();
+ ++it2)
+ {
+ ins(it2.index1(), it2.index2() << ValueType(*it);
+ }
}
+} */
+
+
+
+int main(int, char *[])
+{
+ typedef double ScalarType;
+
+ mtl::compressed2D<ScalarType> mtl4_matrix;
+ mtl4_matrix.change_dim(65025, 65025);
+ set_to_zero(mtl4_matrix);
+ mtl::dense_vector<ScalarType> mtl4_rhs(65025, 0.0);
+ mtl::dense_vector<ScalarType> mtl4_result(65025, 0.0);
+ mtl::dense_vector<ScalarType> mtl4_ref_result(65025, 0.0);
+ mtl::dense_vector<ScalarType> mtl4_residual(65025, 0.0);
+
+ //
+ // Read system from file
+ //
+
+ #ifdef _MSC_VER
+ mtl::io::matrix_market_istream("../../examples/testdata/mat65k.mtx") >> mtl4_matrix;
+ #else
+ mtl::io::matrix_market_istream("../examples/testdata/mat65k.mtx") >> mtl4_matrix;
+ #endif
+
#ifdef _MSC_VER
if (!readVectorFromFile("../../examples/testdata/result65025.txt", mtl4_ref_result))
#else
diff --git a/examples/tutorial/iterative-ublas.cpp b/examples/tutorial/iterative-ublas.cpp
index 94be436..c4f3157 100644
--- a/examples/tutorial/iterative-ublas.cpp
+++ b/examples/tutorial/iterative-ublas.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
@@ -19,7 +21,10 @@
//
// Necessary to obtain a suitable performance in ublas
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+
//
// ublas includes
diff --git a/examples/tutorial/iterative.cpp b/examples/tutorial/iterative.cpp
index 67af2da..4a7ee58 100644
--- a/examples/tutorial/iterative.cpp
+++ b/examples/tutorial/iterative.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
@@ -19,7 +21,9 @@
//
// Necessary to obtain a suitable performance in ublas
-#define NDEBUG
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
//
// ublas includes
diff --git a/examples/tutorial/matrix-range.cpp b/examples/tutorial/matrix-range.cpp
new file mode 100644
index 0000000..bdc91f4
--- /dev/null
+++ b/examples/tutorial/matrix-range.cpp
@@ -0,0 +1,156 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// activate ublas support in ViennaCL
+#define VIENNACL_HAVE_UBLAS
+
+//
+// include necessary system headers
+//
+#include <iostream>
+#include <string>
+
+//
+// ViennaCL includes
+//
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix_proxy.hpp"
+
+//
+// Boost includes
+//
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+/*
+* Tutorial: Use of matrix ranges
+*/
+
+int main (int argc, const char * argv[])
+{
+ typedef float ScalarType; //feel free to change this to 'double' if supported by your hardware
+ typedef boost::numeric::ublas::matrix<ScalarType> MatrixType;
+
+ typedef viennacl::matrix<ScalarType, viennacl::row_major> VCLMatrixType;
+
+ std::size_t dim_large = 5;
+ std::size_t dim_small = 3;
+
+ //
+ // Setup ublas objects and fill with data:
+ //
+ MatrixType ublas_A(dim_large, dim_large);
+ MatrixType ublas_B(dim_small, dim_small);
+ MatrixType ublas_C(dim_large, dim_small);
+ MatrixType ublas_D(dim_small, dim_large);
+
+
+ for (std::size_t i=0; i<ublas_A.size1(); ++i)
+ for (std::size_t j=0; j<ublas_A.size2(); ++j)
+ ublas_A(i,j) = (i+1) + (j+1)*(i+1);
+
+ for (std::size_t i=0; i<ublas_B.size1(); ++i)
+ for (std::size_t j=0; j<ublas_B.size2(); ++j)
+ ublas_B(i,j) = (i+1) + (j+1)*(i+1);
+
+ for (std::size_t i=0; i<ublas_C.size1(); ++i)
+ for (std::size_t j=0; j<ublas_C.size2(); ++j)
+ ublas_C(i,j) = (j+2) + (j+1)*(i+1);
+
+ for (std::size_t i=0; i<ublas_D.size1(); ++i)
+ for (std::size_t j=0; j<ublas_D.size2(); ++j)
+ ublas_D(i,j) = (j+2) + (j+1)*(i+1);
+
+ //
+ // Extract submatrices using the ranges in ublas
+ //
+ boost::numeric::ublas::range ublas_r1(0, dim_small); //the first 'dim_small' entries
+ boost::numeric::ublas::range ublas_r2(dim_large - dim_small, dim_large); //the last 'dim_small' entries
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub1(ublas_A, ublas_r1, ublas_r1); //upper left part of A
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub2(ublas_A, ublas_r2, ublas_r2); //lower right part of A
+
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_C_sub(ublas_C, ublas_r1, ublas_r1); //upper left part of C
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_D_sub(ublas_D, ublas_r1, ublas_r1); //upper left part of D
+
+ //
+ // Setup ViennaCL objects
+ //
+ VCLMatrixType vcl_A(dim_large, dim_large);
+ VCLMatrixType vcl_B(dim_small, dim_small);
+ VCLMatrixType vcl_C(dim_large, dim_small);
+ VCLMatrixType vcl_D(dim_small, dim_large);
+
+ viennacl::copy(ublas_A, vcl_A);
+ viennacl::copy(ublas_B, vcl_B);
+ viennacl::copy(ublas_C, vcl_C);
+ viennacl::copy(ublas_D, vcl_D);
+
+ //
+ // Extract submatrices using the ranges in ViennaCL
+ //
+ viennacl::range vcl_r1(0, dim_small); //the first 'dim_small' entries
+ viennacl::range vcl_r2(dim_large - dim_small, dim_large); //the last 'dim_small' entries
+ viennacl::matrix_range<VCLMatrixType> vcl_A_sub1(vcl_A, vcl_r1, vcl_r1); //upper left part of A
+ viennacl::matrix_range<VCLMatrixType> vcl_A_sub2(vcl_A, vcl_r2, vcl_r2); //lower right part of A
+
+ viennacl::matrix_range<VCLMatrixType> vcl_C_sub(vcl_C, vcl_r1, vcl_r1); //upper left part of C
+ viennacl::matrix_range<VCLMatrixType> vcl_D_sub(vcl_D, vcl_r1, vcl_r1); //upper left part of D
+
+ //
+ // Copy from ublas to submatrices and back:
+ //
+
+ ublas_A_sub1 = ublas_B;
+ viennacl::copy(ublas_B, vcl_A_sub1);
+ viennacl::copy(vcl_A_sub1, ublas_B);
+
+ //
+ // Addition:
+ //
+
+ // range to range:
+ ublas_A_sub2 += ublas_A_sub2;
+ vcl_A_sub2 += vcl_A_sub2;
+
+ // range to matrix:
+ ublas_B += ublas_A_sub2;
+ vcl_B += vcl_A_sub2;
+
+
+ //
+ // use matrix range with matrix-matrix product:
+ //
+ ublas_A_sub1 += prod(ublas_C_sub, ublas_D_sub);
+ vcl_A_sub1 += viennacl::linalg::prod(vcl_C_sub, vcl_D_sub);
+
+ //
+ // Print result matrices:
+ //
+ std::cout << "Result ublas: " << ublas_A << std::endl;
+ std::cout << "Result ViennaCL: " << vcl_A << std::endl;
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/mtl4-with-viennacl.cpp b/examples/tutorial/mtl4-with-viennacl.cpp
index 778d48f..e32c3dd 100644
--- a/examples/tutorial/mtl4-with-viennacl.cpp
+++ b/examples/tutorial/mtl4-with-viennacl.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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
diff --git a/examples/tutorial/qr.cpp b/examples/tutorial/qr.cpp
new file mode 100644
index 0000000..dd9d118
--- /dev/null
+++ b/examples/tutorial/qr.cpp
@@ -0,0 +1,99 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// activate ublas support in ViennaCL
+#define VIENNACL_HAVE_UBLAS
+
+//
+// include necessary system headers
+//
+#include <iostream>
+
+//
+// ViennaCL includes: We only need the qr-header
+//
+#include "viennacl/linalg/qr.hpp"
+
+//
+// Boost includes
+//
+#include <boost/numeric/ublas/vector.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/io.hpp>
+
+/*
+* Tutorial: QR factorization of host-based (ublas-)matrices
+*/
+
+int main (int argc, const char * argv[])
+{
+ typedef float ScalarType; //feel free to change this to 'double' if supported by your hardware
+ typedef boost::numeric::ublas::matrix<ScalarType> MatrixType;
+ typedef boost::numeric::ublas::vector<ScalarType> VectorType;
+
+ size_t rows = 7;
+ size_t cols = 6;
+
+ //
+ // Create matrices with some data
+ //
+ MatrixType A(rows, cols);
+ MatrixType Q(rows, rows);
+ MatrixType R(rows, cols);
+
+ for (size_t i=0; i<rows; ++i)
+ {
+ for (size_t j=0; j<cols; ++j)
+ {
+ A(i,j) = 1.0 + (i + 1)*(j+1);
+ R(i,j) = 0.0;
+ }
+
+ for (size_t j=0; j<rows; ++j)
+ Q(i,j) = 0.0;
+ }
+
+ // Print matrix before factorization
+ std::cout << "A: " << A << std::endl << std::endl;
+
+ //
+ // Compute QR factorization of A. A is overwritten with Householder vectors. Coefficients are returned and a block size of 3 is used.
+ // Note that at the moment the number of columns of A must be divisible by the block size
+ //
+ std::vector<ScalarType> betas = viennacl::linalg::inplace_qr(A, 3);
+
+ std::cout << "Inplace QR-factored A: " << A << std::endl << std::endl;
+
+ //
+ // Recover full matrix orthogonal matrix Q and upper right matrix R
+ //
+ viennacl::linalg::recoverQ(A, betas, Q, R);
+
+ // Print for verification purposes:
+ std::cout << "R after recovery: " << R << std::endl << std::endl;
+ std::cout << "Q after recovery: " << Q << std::endl << std::endl;
+ std::cout << "Q*Q^T: " << prod(Q, trans(Q)) << std::endl << std::endl; //This should be identity up to round-off errors
+
+ std::cout << "Q * R: " << prod(Q, R) << std::endl << std::endl; // this should be the initial matrix A up to round-off errors
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/spai.cpp b/examples/tutorial/spai.cpp
new file mode 100644
index 0000000..b2b339d
--- /dev/null
+++ b/examples/tutorial/spai.cpp
@@ -0,0 +1,166 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+//
+#define VIENNACL_HAVE_UBLAS
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
+//#define VIENNACL_BUILD_INFO
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <sys/time.h>
+#include <time.h>
+//#include <omp.h>
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/bicgstab.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"
+#include "viennacl/linalg/spai.hpp"
+//#include "qr.hpp"
+//#include "spai-static.hpp"
+//#include "viennacl/linalg/fspai.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/foreach.hpp"
+#include "boost/tokenizer.hpp"
+//#include "viennacl/linalg/detail/spai/small_matrix.hpp"
+
+#include "vector-io.hpp"
+
+template <typename MatrixType, typename VectorType, typename SolverTag, typename Preconditioner>
+void run_solver(MatrixType const & A, VectorType const & b, SolverTag const & solver_tag, Preconditioner const & precond)
+{
+ VectorType result = viennacl::linalg::solve(A, b, solver_tag, precond);
+ std::cout << " * Solver iterations: " << solver_tag.iters() << std::endl;
+ VectorType residual = viennacl::linalg::prod(A, result) - b;
+ std::cout << " * Rel. Residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(b) << std::endl;
+}
+
+
+int main (int argc, const char * argv[])
+{
+ typedef float ScalarType;
+ typedef boost::numeric::ublas::compressed_matrix<ScalarType> MatrixType;
+ typedef boost::numeric::ublas::vector<ScalarType> VectorType;
+ typedef viennacl::compressed_matrix<ScalarType> GPUMatrixType;
+ typedef viennacl::vector<ScalarType> GPUVectorType;
+
+ MatrixType M;
+
+ //
+ // Read system matrix from file
+ //
+ #ifdef _MSC_VER
+ if (!viennacl::io::read_matrix_market_file(ublas_matrix, "../../examples/testdata/mat65k.mtx"))
+ #else
+ if (!viennacl::io::read_matrix_market_file(M, "../examples/testdata/mat65k.mtx"))
+ #endif
+ {
+ std::cerr<<"ERROR: Could not read matrix file " << std::endl;
+ exit(EXIT_FAILURE);
+ }
+
+ std::cout << "Size of matrix: " << M.size1() << std::endl;
+ std::cout << "Avg. Entries per row: " << M.nnz() / static_cast<double>(M.size1()) << std::endl;
+
+ //
+ // Use uniform load vector:
+ //
+ VectorType rhs(M.size2());
+ for (size_t i=0; i<rhs.size(); ++i)
+ rhs(i) = 1;
+
+ GPUMatrixType gpu_M(M.size1(), M.size2());
+ GPUVectorType gpu_rhs(M.size1());
+ viennacl::copy(M, gpu_M);
+ viennacl::copy(rhs, gpu_rhs);
+
+ ///////////////////////////////// Tests to follow /////////////////////////////
+
+ viennacl::linalg::bicgstab_tag solver_tag(1e-10, 50); //for simplicity and reasonably short execution times we use only 50 iterations here
+
+ //
+ // Reference: No preconditioner:
+ //
+ std::cout << "--- Reference 1: Pure BiCGStab on CPU ---" << std::endl;
+ VectorType result = viennacl::linalg::solve(M, rhs, solver_tag);
+ std::cout << " * Solver iterations: " << solver_tag.iters() << std::endl;
+ VectorType residual = viennacl::linalg::prod(M, result) - rhs;
+ std::cout << " * Rel. Residual: " << viennacl::linalg::norm_2(residual) / viennacl::linalg::norm_2(rhs) << std::endl;
+
+ std::cout << "--- Reference 2: Pure BiCGStab on GPU ---" << std::endl;
+ GPUVectorType gpu_result = viennacl::linalg::solve(gpu_M, gpu_rhs, solver_tag);
+ std::cout << " * Solver iterations: " << solver_tag.iters() << std::endl;
+ GPUVectorType gpu_residual = viennacl::linalg::prod(gpu_M, gpu_result) - gpu_rhs;
+ std::cout << " * Rel. Residual: " << viennacl::linalg::norm_2(gpu_residual) / viennacl::linalg::norm_2(gpu_rhs) << std::endl;
+
+
+ //
+ // Reference: ILUT preconditioner:
+ //
+ std::cout << "--- Reference 2: BiCGStab with ILUT on CPU ---" << std::endl;
+ std::cout << " * Preconditioner setup..." << std::endl;
+ viennacl::linalg::ilut_precond<MatrixType> ilut(M, viennacl::linalg::ilut_tag());
+ std::cout << " * Iterative solver run..." << std::endl;
+ run_solver(M, rhs, solver_tag, ilut);
+
+
+ //
+ // Test 1: SPAI with CPU:
+ //
+ std::cout << "--- Test 1: CPU-based SPAI ---" << std::endl;
+ std::cout << " * Preconditioner setup..." << std::endl;
+ viennacl::linalg::spai_precond<MatrixType> spai_cpu(M, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+ std::cout << " * Iterative solver run..." << std::endl;
+ run_solver(M, rhs, solver_tag, spai_cpu);
+
+ //
+ // Test 2: FSPAI with CPU:
+ //
+ std::cout << "--- Test 2: CPU-based FSPAI ---" << std::endl;
+ std::cout << " * Preconditioner setup..." << std::endl;
+ viennacl::linalg::fspai_precond<MatrixType> fspai_cpu(M, viennacl::linalg::fspai_tag());
+ std::cout << " * Iterative solver run..." << std::endl;
+ run_solver(M, rhs, solver_tag, fspai_cpu);
+
+ //
+ // Test 3: SPAI with GPU:
+ //
+ std::cout << "--- Test 3: GPU-based SPAI ---" << std::endl;
+ std::cout << " * Preconditioner setup..." << std::endl;
+ viennacl::linalg::spai_precond<GPUMatrixType> spai_gpu(gpu_M, viennacl::linalg::spai_tag(1e-3, 3, 5e-2));
+ std::cout << " * Iterative solver run..." << std::endl;
+ run_solver(gpu_M, gpu_rhs, solver_tag, spai_gpu);
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/structured-matrices.cpp b/examples/tutorial/structured-matrices.cpp
new file mode 100644
index 0000000..112a7c4
--- /dev/null
+++ b/examples/tutorial/structured-matrices.cpp
@@ -0,0 +1,120 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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>
+
+//
+// ViennaCL includes
+//
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+
+//
+// Boost includes
+//
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+/*
+* Tutorial: Structured matrices
+*/
+
+int main()
+{
+ typedef float ScalarType;
+
+ std::size_t size = 4;
+
+ //
+ // Set up ublas objects
+ //
+ boost::numeric::ublas::vector<ScalarType> ublas_vec(size);
+ boost::numeric::ublas::matrix<ScalarType> ublas_circulant(size, size);
+ boost::numeric::ublas::matrix<ScalarType> ublas_hankel(size, size);
+ boost::numeric::ublas::matrix<ScalarType> ublas_toeplitz(size, size);
+ boost::numeric::ublas::matrix<ScalarType> ublas_vandermonde(size, size);
+
+ for(std::size_t i = 0; i < size; i++)
+ for(std::size_t j = 0; j < size; j++)
+ {
+ ublas_circulant(i,j) = static_cast<ScalarType>((i - j + size) % size);
+ ublas_hankel(i,j) = static_cast<ScalarType>((i + j) % (2 * size));
+ ublas_toeplitz(i,j) = static_cast<ScalarType>(i) - static_cast<ScalarType>(j);
+ ublas_vandermonde(i,j) = pow(ScalarType(1.0 + i/1000.0), ScalarType(j));
+ }
+
+ //
+ // Set up ViennaCL objects
+ //
+ viennacl::vector<ScalarType> vcl_vec(size);
+ viennacl::vector<ScalarType> vcl_result(size);
+ viennacl::circulant_matrix<ScalarType> vcl_circulant(size, size);
+ viennacl::hankel_matrix<ScalarType> vcl_hankel(size, size);
+ viennacl::toeplitz_matrix<ScalarType> vcl_toeplitz(size, size);
+ viennacl::vandermonde_matrix<ScalarType> vcl_vandermonde(size, size);
+
+ // copy matrices:
+ viennacl::copy(ublas_circulant, vcl_circulant);
+ viennacl::copy(ublas_hankel, vcl_hankel);
+ viennacl::copy(ublas_toeplitz, vcl_toeplitz);
+ viennacl::copy(ublas_vandermonde, vcl_vandermonde);
+
+ // fill vectors:
+ for(std::size_t i = 0; i < size; i++)
+ {
+ ublas_vec[i] = ScalarType(i);
+ vcl_vec[i] = ScalarType(i);
+ }
+
+ //
+ // Add matrices:
+ //
+ std::cout << "Circulant matrix before addition: " << vcl_circulant << std::endl << std::endl;
+ vcl_circulant += vcl_circulant;
+ std::cout << "Circulant matrix after addition: " << vcl_circulant << std::endl << std::endl;
+
+ //
+ // Manipulate single entry
+ //
+ std::cout << "Hankel matrix before manipulation: " << vcl_hankel << std::endl << std::endl;
+ vcl_hankel(1, 2) = ScalarType(3.14);
+ std::cout << "Hankel matrix after manipulation: " << vcl_hankel << std::endl << std::endl;
+
+ std::cout << "Vandermonde matrix before manipulation: " << vcl_vandermonde << std::endl << std::endl;
+ vcl_vandermonde(1) = ScalarType(1.1); //NOTE: Write access only via row index
+ std::cout << "Vandermonde matrix after manipulation: " << vcl_vandermonde << std::endl << std::endl;
+
+ //
+ // Compute matrix-vector product (FFT-accelerated)
+ //
+ std::cout << "Toeplitz matrix: " << vcl_toeplitz << std::endl;
+ std::cout << "Vector: " << vcl_vec << std::endl << std::endl;
+ vcl_result = viennacl::linalg::prod(vcl_toeplitz, vcl_vec);
+ std::cout << "Result of matrix-vector product: " << vcl_result << std::endl << std::endl;
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+ return EXIT_SUCCESS;
+}
diff --git a/examples/tutorial/vector-io.hpp b/examples/tutorial/vector-io.hpp
index 2cd168b..0b74393 100644
--- a/examples/tutorial/vector-io.hpp
+++ b/examples/tutorial/vector-io.hpp
@@ -1,39 +1,29 @@
-#ifndef _VECTOR_IO_HPP_
-#define _VECTOR_IO_HPP_
+#ifndef VECTOR_IO_HPP_
+#define VECTOR_IO_HPP_
-#include <string>
-#include <iostream>
-#include <fstream>
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#include <viennacl/tools/tools.hpp>
-/*
-template<class TYPE>
-bool readVectorFromBinaryFile(const std::string & filename, boost::numeric::ublas::vector<TYPE> & vec)
-{
- std::ifstream file(filename.c_str(), std::ios_base::binary);
- if (!file) return false;
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
- unsigned int size;
- file.read((char*)&size, sizeof(unsigned int));
- vec.resize(size);
- file.read((char*)&vec[0], sizeof(TYPE)*size);
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
- return true;
-}
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
-template<class TYPE>
-bool saveVectorToBinaryFile(const std::string & filename, const boost::numeric::ublas::vector<TYPE> & vec)
-{
- std::ofstream file(filename.c_str(), std::ios_base::binary);
- if (!file) return false;
-
- unsigned int size = vec.size();
- file.write((char*)&size, sizeof(unsigned int));
- file.write((char*)&vec[0], sizeof(TYPE)*size);
+#include <string>
+#include <iostream>
+#include <fstream>
- return true;
-}
-*/
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/result_of.hpp"
+#include "viennacl/traits/size.hpp"
template <typename MatrixType, typename ScalarType>
@@ -113,7 +103,7 @@ template <typename VectorType>
bool readVectorFromFile(const std::string & filename,
VectorType & vec)
{
- typedef typename viennacl::tools::result_of::value_type<VectorType>::type ScalarType;
+ typedef typename viennacl::result_of::value_type<VectorType>::type ScalarType;
std::ifstream file(filename.c_str());
@@ -138,7 +128,7 @@ bool readVectorFromFile(const std::string & filename,
template <class MatrixType>
bool readMatrixFromFile(const std::string & filename, MatrixType & matrix)
{
- typedef typename viennacl::tools::result_of::value_type<MatrixType>::type ScalarType;
+ typedef typename viennacl::result_of::value_type<MatrixType>::type ScalarType;
std::cout << "Reading matrix..." << std::endl;
@@ -155,7 +145,7 @@ bool readMatrixFromFile(const std::string & filename, MatrixType & matrix)
file >> num_rows >> num_columns;
if (num_rows != num_columns) return false;
- viennacl::tools::traits::resize(matrix, num_rows, num_rows);
+ viennacl::traits::resize(matrix, num_rows, num_rows);
my_inserter<MatrixType> ins(matrix);
for (unsigned int row = 0; row < num_rows; ++row)
diff --git a/examples/tutorial/vector-range.cpp b/examples/tutorial/vector-range.cpp
new file mode 100644
index 0000000..8db6579
--- /dev/null
+++ b/examples/tutorial/vector-range.cpp
@@ -0,0 +1,134 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+// activate ublas support in ViennaCL
+#define VIENNACL_HAVE_UBLAS
+
+//
+// include necessary system headers
+//
+#include <iostream>
+#include <string>
+
+//
+// ViennaCL includes
+//
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/vector_proxy.hpp"
+
+//
+// Boost includes
+//
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+/*
+* Tutorial: Use of matrix ranges
+*/
+
+int main (int argc, const char * argv[])
+{
+ typedef float ScalarType; //feel free to change this to 'double' if supported by your hardware
+ typedef boost::numeric::ublas::vector<ScalarType> VectorType;
+
+ typedef viennacl::vector<ScalarType> VCLVectorType;
+
+ std::size_t dim_large = 7;
+ std::size_t dim_small = 3;
+
+ //
+ // Setup ublas objects and fill with data:
+ //
+ VectorType ublas_v1(dim_large);
+ VectorType ublas_v2(dim_small);
+
+ for (std::size_t i=0; i<ublas_v1.size(); ++i)
+ ublas_v1(i) = i+1;
+
+ for (std::size_t i=0; i<ublas_v2.size(); ++i)
+ ublas_v2(i) = dim_large + i;
+
+
+ //
+ // Extract submatrices using the ranges in ublas
+ //
+ boost::numeric::ublas::range ublas_r1(0, dim_small); //the first 'dim_small' entries
+ boost::numeric::ublas::range ublas_r2(dim_small - 1, 2*dim_small - 1); // 'dim_small' entries somewhere from the middle
+ boost::numeric::ublas::range ublas_r3(dim_large - dim_small, dim_large); // the last 'dim_small' entries
+ boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub1(ublas_v1, ublas_r1); // front part of vector v_1
+ boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub2(ublas_v1, ublas_r2); // center part of vector v_1
+ boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub3(ublas_v1, ublas_r3); // tail of vector v_1
+
+
+ //
+ // Setup ViennaCL objects
+ //
+ VCLVectorType vcl_v1(dim_large);
+ VCLVectorType vcl_v2(dim_small);
+
+ viennacl::copy(ublas_v1, vcl_v1);
+ viennacl::copy(ublas_v2, vcl_v2);
+
+
+ //
+ // Extract submatrices using the ranges in ViennaCL
+ //
+ viennacl::range vcl_r1(0, dim_small); //the first 'dim_small' entries
+ viennacl::range vcl_r2(dim_small - 1, 2*dim_small - 1); // 'dim_small' entries somewhere from the middle
+ viennacl::range vcl_r3(dim_large - dim_small, dim_large); // the last 'dim_small' entries
+ viennacl::vector_range<VCLVectorType> vcl_v1_sub1(vcl_v1, vcl_r1); // front part of vector v_1
+ viennacl::vector_range<VCLVectorType> vcl_v1_sub2(vcl_v1, vcl_r2); // center part of vector v_1
+ viennacl::vector_range<VCLVectorType> vcl_v1_sub3(vcl_v1, vcl_r3); // tail of vector v_1
+
+
+ //
+ // Copy from ublas to submatrices and back:
+ //
+
+ ublas_v1_sub1 = ublas_v2;
+ viennacl::copy(ublas_v2, vcl_v1_sub1);
+ viennacl::copy(vcl_v1_sub1, ublas_v2);
+
+ //
+ // Addition:
+ //
+
+ ublas_v1_sub1 += ublas_v1_sub1;
+ vcl_v1_sub1 += vcl_v1_sub1;
+
+ ublas_v1_sub2 += ublas_v1_sub2;
+ vcl_v1_sub2 += vcl_v1_sub2;
+
+ ublas_v1_sub3 += ublas_v1_sub3;
+ vcl_v1_sub3 += vcl_v1_sub3;
+
+ //
+ // print vectors:
+ //
+ std::cout << "ublas: " << ublas_v1 << std::endl;
+ std::cout << "ViennaCL: " << vcl_v1 << std::endl;
+
+ //
+ // That's it.
+ //
+ std::cout << "!!!! TUTORIAL COMPLETED SUCCESSFULLY !!!!" << std::endl;
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/examples/tutorial/viennacl-info.cpp b/examples/tutorial/viennacl-info.cpp
index 4016c4d..7278ab7 100644
--- a/examples/tutorial/viennacl-info.cpp
+++ b/examples/tutorial/viennacl-info.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Josef Weinbub weinbub at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (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>
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d5cf057..bf8c661 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,106 +1,12 @@
-PROJECT(ViennaCLTests)
-
-cmake_minimum_required(VERSION 2.4)
-
-#-----------------------------------------------------------------------------
-#specify include and source directory
-INCLUDE_DIRECTORIES("../") # ViennaCL root
-
-# alternate boost path for macs
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- INCLUDE_DIRECTORIES("/opt/local/include")
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-
-# ************************** Section 2: Configure OpenCL **************************
-
-#
-# AMD APP SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if AMD APP SDK is not in use.
-#
-SET(AppSDK $ENV{AMDAPPSDKROOT})
-IF(AppSDK)
- INCLUDE_DIRECTORIES($ENV{AMDAPPSDKROOT}/include)
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86) #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{AMDAPPSDKROOT}/lib/x86_64) #use this on 64 bit systems
-ENDIF(AppSDK)
-#
-# Note that the environment variable was ATISTREAMSDKROOT in older versions of the SDK:
-#
-SET(StreamSDK $ENV{ATISTREAMSDKROOT})
-IF(StreamSDK)
- INCLUDE_DIRECTORIES($ENV{ATISTREAMSDKROOT}/include)
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86) #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{ATISTREAMSDKROOT}/lib/x86_64) #use this on 64 bit systems
-ENDIF(StreamSDK)
-
-
-#
-# Intel OpenCL SDK:
-# add include and lib path to build environment
-# The linker will most likely pick the correct link directory
-# Otherwise, feel free to comment the wrong link directory for your machine.
-#
-# The following lines can be commented if Intel OpenCL SDK is not in use.
-#
-SET(IntelSDK $ENV{INTELOCLSDKROOT})
-IF(IntelSDK)
- INCLUDE_DIRECTORIES($ENV{INTELOCLSDKROOT}/include)
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x86) #use this on 32 bit systems
- LINK_DIRECTORIES($ENV{INTELOCLSDKROOT}/lib/x64) #use this on 64 bit systems
-ENDIF(IntelSDK)
-
-#
-# For NVIDIA hardware, there should be no need for additional configurations at this point
-#
-
-#-----------------------------------------------------------------------------
-
-#add definitions, compiler switches, etc.
-IF(CMAKE_COMPILER_IS_GNUCXX)
- #ADD_DEFINITIONS(-Wall -O0 -g)
- ADD_DEFINITIONS(-Wall -pedantic -O3)
-ENDIF(CMAKE_COMPILER_IS_GNUCXX)
-#-----------------------------------------------------------------------------
-
-#-----------------------------------------------------------------------------
-# Configure Dart testing support. This should be done before any
-# MESSAGE(FATAL_ERROR ...) commands are invoked.
-INCLUDE(CTest)
-ENABLE_TESTING()
-IF(BUILD_TESTING)
- SET(BUILDNAME "${BUILDNAME}" CACHE STRING "Name of build on the dashboard")
- MARK_AS_ADVANCED(BUILDNAME)
-ENDIF(BUILD_TESTING)
-
-#-----------------------------------------------------------------------------
-# add the source files which should be tested without the trailing *.cpp
-SET(PROGS scalar vector matrix sparse iterators blas3)
-#-----------------------------------------------------------------------------
-
-#-----------------------------------------------------------------------------
-FOREACH(PROG ${PROGS})
- ADD_EXECUTABLE(${PROG} ../src/${PROG}.cpp)
- ADD_test(${PROG} ${PROG})
- TARGET_LINK_LIBRARIES(${PROG} OpenCL)
-ENDFOREACH(PROG)
-
-ADD_EXECUTABLE(external_linkage ../src/external_1.cpp
- ../src/external_2.cpp)
-
-#-----------------------------------------------------------------------------
-
-#-----------------------------------------------------------------------------
-# Mac OS X specific linker part
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
- set(CMAKE_EXE_LINKER_FLAGS "-framework OpenCL")
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-
-# Linux specific linker part
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- set(CMAKE_EXE_LINKER_FLAGS "-lOpenCL")
-ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-#-----------------------------------------------------------------------------
+foreach(PROG blas3 fft iterators matrix matrix_range scalar sparse structured-matrices vector vector_range)
+ add_executable(${PROG}-test src/${PROG}.cpp)
+ target_link_libraries(${PROG}-test ${OPENCL_LIBRARIES})
+ add_test(${PROG} ${PROG}-test)
+endforeach(PROG)
+
+include_directories(${PROJECT_SOURCE_DIR}/external)
+add_executable(external_linkage
+ src/external_1.cpp
+ src/external_2.cpp
+ ${PROJECT_SOURCE_DIR}/external/pugixml/src/pugixml.cpp)
+target_link_libraries(external_linkage ${OPENCL_LIBRARIES})
diff --git a/tests/CTestConfig.cmake b/tests/CTestConfig.cmake
deleted file mode 100644
index 1a48cae..0000000
--- a/tests/CTestConfig.cmake
+++ /dev/null
@@ -1,13 +0,0 @@
-## This file should be placed in the root directory of your project.
-## Then modify the CMakeLists.txt file in the root directory of your
-## project to incorporate the testing dashboard.
-## # The following are required to uses Dart and the Cdash dashboard
-## ENABLE_TESTING()
-## INCLUDE(CTest)
-set(CTEST_PROJECT_NAME "ViennaCL")
-set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
-
-set(CTEST_DROP_METHOD "http")
-set(CTEST_DROP_SITE "my.cdash.org")
-set(CTEST_DROP_LOCATION "/submit.php?project=ViennaCL")
-set(CTEST_DROP_SITE_CDASH TRUE)
diff --git a/tests/clean.sh b/tests/clean.sh
deleted file mode 100755
index b9b5ea3..0000000
--- a/tests/clean.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-rm -rf build/
-rm -rf .build/
-rm -f *.log
diff --git a/tests/run_regression.sh b/tests/run_regression.sh
deleted file mode 100755
index 42a4648..0000000
--- a/tests/run_regression.sh
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-
-INPUT=$1
-BUILDFOLDER=build
-
-# extract number of cores on the system
-CORES=`grep -c ^processor /proc/cpuinfo`
-echo "building with " $CORES "cores "
-
-./clean.sh
-if [ "$INPUT" != "" ]; then
- if [ "$INPUT" == "help" ] ; then
- echo "usage: ./run_regression.sh [options]"
- echo ""
- echo "options:"
- echo " help prints this help message"
- echo " submit submits the result to online cdash service"
- exit -1
- elif [ "$INPUT" == "submit" ] ; then
- mkdir -p $BUILDFOLDER
- cd $BUILDFOLDER
- cmake ..
- # build and submit results to online cdash service
- make Nightly -j$CORES
- echo ""
- echo "regression result is available here:"
- echo "----------------------------------------------"
- echo "http://my.cdash.org/index.php?project=ViennaCL"
- echo "----------------------------------------------"
- echo ""
- else
- echo ""
- echo "# Error - wrong option: \""$INPUT"\""
- echo ""
- echo "usage: ./run_regression.sh [options]"
- echo ""
- echo "options:"
- echo " help prints this help message"
- echo " submit submits the result to online cdash service"
- exit -1
- fi
-else
- mkdir -p $BUILDFOLDER
- cd $BUILDFOLDER
- cmake ..
- # plain build without submit
- make -j$CORES
- make test
-fi
-
-
diff --git a/tests/src/blas3.cpp b/tests/src/blas3.cpp
index 989a8cc..b4e3a9d 100644
--- a/tests/src/blas3.cpp
+++ b/tests/src/blas3.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//#define NDEBUG
@@ -62,9 +64,9 @@ template <typename ScalarType>
ScalarType diff(ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType> & v2)
{
ublas::vector<ScalarType> v2_cpu(v2.size());
- copy(v2.begin(), v2.end(), v2_cpu.begin());
+ viennacl::copy(v2.begin(), v2.end(), v2_cpu.begin());
- for (unsigned int i=0;i<v1.size(); ++i)
+ for (std::size_t i=0;i<v1.size(); ++i)
{
if ( std::max( fabs(v2_cpu[i]), fabs(v1[i]) ) > 0 )
v2_cpu[i] = fabs(v2_cpu[i] - v1[i]) / std::max( fabs(v2_cpu[i]), fabs(v1[i]) );
@@ -83,9 +85,9 @@ ScalarType diff(ublas::matrix<ScalarType> & mat1, viennacl::matrix<ScalarType, F
double ret = 0;
double act = 0;
- for (unsigned int i = 0; i < mat2_cpu.size1(); ++i)
+ for (std::size_t i = 0; i < mat2_cpu.size1(); ++i)
{
- for (unsigned int j = 0; j < mat2_cpu.size2(); ++j)
+ for (std::size_t j = 0; j < mat2_cpu.size2(); ++j)
{
act = fabs(mat2_cpu(i,j) - mat1(i,j)) / std::max( fabs(mat2_cpu(i, j)), fabs(mat1(i,j)) );
if (act > ret)
@@ -93,7 +95,7 @@ ScalarType diff(ublas::matrix<ScalarType> & mat1, viennacl::matrix<ScalarType, F
}
}
//std::cout << ret << std::endl;
- return ret;
+ return ScalarType(ret);
}
//
@@ -227,19 +229,19 @@ int test_solve(Epsilon const& epsilon)
ublas::matrix<NumericT> C_start(rhs_num, matrix_size);
//fill A and B:
- for (unsigned int i = 0; i < A.size1(); ++i)
+ for (std::size_t i = 0; i < A.size1(); ++i)
{
- for (unsigned int j = 0; j < A.size2(); ++j)
+ for (std::size_t j = 0; j < A.size2(); ++j)
A(i,j) = static_cast<NumericT>(-0.5) * random<NumericT>();
- A(i,i) = 1.0 + 2.0 * random<NumericT>(); //some extra weight on diagonal for stability
+ A(i,i) = NumericT(1.0) + NumericT(2.0) * random<NumericT>(); //some extra weight on diagonal for stability
}
- for (unsigned int i = 0; i < B_start.size1(); ++i)
- for (unsigned int j = 0; j < B_start.size2(); ++j)
+ for (std::size_t i = 0; i < B_start.size1(); ++i)
+ for (std::size_t j = 0; j < B_start.size2(); ++j)
B_start(i,j) = random<NumericT>();
- for (unsigned int i = 0; i < C_start.size1(); ++i)
- for (unsigned int j = 0; j < C_start.size2(); ++j)
+ for (std::size_t i = 0; i < C_start.size1(); ++i)
+ for (std::size_t j = 0; j < C_start.size2(); ++j)
C_start(i,j) = random<NumericT>();
ublas::matrix<NumericT> B = B_start;
@@ -539,7 +541,7 @@ int main()
std::cout << std::endl;
{
typedef float NumericT;
- NumericT epsilon = 1.0E-3;
+ NumericT epsilon = NumericT(1.0E-3);
std::cout << "# Testing setup:" << std::endl;
std::cout << " eps: " << epsilon << std::endl;
std::cout << " numeric: float" << std::endl;
diff --git a/tests/src/blas3range.cpp b/tests/src/blas3range.cpp
new file mode 100644
index 0000000..6b5b613
--- /dev/null
+++ b/tests/src/blas3range.cpp
@@ -0,0 +1,589 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+//#define NDEBUG
+
+//
+// *** System
+//
+#include <iostream>
+
+//
+// *** Boost
+//
+#include <boost/numeric/ublas/io.hpp>
+#include <boost/numeric/ublas/triangular.hpp>
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+#include <boost/numeric/ublas/io.hpp>
+
+//
+// *** ViennaCL
+//
+//#define VIENNACL_DEBUG_INFO_ALL
+//#define VIENNACL_DEBUG_BUILD
+#define VIENNACL_HAVE_UBLAS 1
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix_proxy.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/linalg/direct_solve.hpp"
+#include "examples/tutorial/Random.hpp"
+//
+// -------------------------------------------------------------
+//
+using namespace boost::numeric;
+//
+// -------------------------------------------------------------
+//
+template <typename ScalarType>
+ScalarType diff(ScalarType & s1, viennacl::scalar<ScalarType> & s2)
+{
+ if (s1 != s2)
+ return (s1 - s2) / std::max(fabs(s1), fabs(s2));
+ return 0;
+}
+
+template <typename ScalarType>
+ScalarType diff(ublas::vector<ScalarType> & v1, viennacl::vector<ScalarType> & v2)
+{
+ ublas::vector<ScalarType> v2_cpu(v2.size());
+ copy(v2.begin(), v2.end(), v2_cpu.begin());
+
+ for (unsigned int i=0;i<v1.size(); ++i)
+ {
+ if ( std::max( fabs(v2_cpu[i]), fabs(v1[i]) ) > 0 )
+ v2_cpu[i] = fabs(v2_cpu[i] - v1[i]) / std::max( fabs(v2_cpu[i]), fabs(v1[i]) );
+ else
+ v2_cpu[i] = 0.0;
+ }
+
+ return norm_inf(v2_cpu);
+}
+
+template <typename ScalarType, typename VCLMatrixType>
+ScalarType diff(ublas::matrix<ScalarType> & mat1, VCLMatrixType & mat2)
+{
+ ublas::matrix<ScalarType> mat2_cpu(mat2.size1(), mat2.size2());
+ viennacl::copy(mat2, mat2_cpu);
+ double ret = 0;
+ double act = 0;
+
+ for (unsigned int i = 0; i < mat2_cpu.size1(); ++i)
+ {
+ for (unsigned int j = 0; j < mat2_cpu.size2(); ++j)
+ {
+ act = fabs(mat2_cpu(i,j) - mat1(i,j)) / std::max( fabs(mat2_cpu(i, j)), fabs(mat1(i,j)) );
+ if (act > ret)
+ ret = act;
+ }
+ }
+ //std::cout << ret << std::endl;
+ return ret;
+}
+
+//
+// -------------------------------------------------------------
+//
+template< typename NumericT, typename MatrixTypeA, typename MatrixTypeB, typename MatrixTypeC, typename Epsilon >
+int test_prod(Epsilon const& epsilon)
+{
+ int retval = EXIT_SUCCESS;
+ long matrix_size1 = 157; //some odd number, not too large
+ long matrix_size2 = 91; //some odd number, not too large
+ long matrix_size3 = 73; //some odd number, not too large
+ NumericT act_diff = 0;
+
+ // --------------------------------------------------------------------------
+ ublas::matrix<NumericT> A(matrix_size1, matrix_size2);
+ ublas::matrix<NumericT> B(matrix_size2, matrix_size3);
+ ublas::matrix<NumericT> C(matrix_size1, matrix_size3);
+
+ //fill A and B:
+ for (unsigned int i = 0; i < A.size1(); ++i)
+ for (unsigned int j = 0; j < A.size2(); ++j)
+ A(i,j) = static_cast<NumericT>(0.1) * random<NumericT>();
+ for (unsigned int i = 0; i < B.size1(); ++i)
+ for (unsigned int j = 0; j < B.size2(); ++j)
+ B(i,j) = static_cast<NumericT>(0.1) * random<NumericT>();
+
+ ublas::matrix<NumericT> A_trans = trans(A);
+ ublas::matrix<NumericT> B_trans = trans(B);
+
+ MatrixTypeA vcl_A_full(3*matrix_size1, 3*matrix_size2); vcl_A_full.clear();
+ MatrixTypeB vcl_B_full(3*matrix_size2, 3*matrix_size3); vcl_B_full.clear();
+ MatrixTypeA vcl_A_trans_full(3*matrix_size2, 3*matrix_size1); vcl_A_trans_full.clear();
+ MatrixTypeB vcl_B_trans_full(3*matrix_size3, 3*matrix_size2); vcl_B_trans_full.clear();
+ MatrixTypeC vcl_C_full(3*matrix_size1, 3*matrix_size3); vcl_C_full.clear();
+
+ viennacl::range r1(matrix_size1, 2*matrix_size1);
+ viennacl::range r2(matrix_size2, 2*matrix_size2);
+ viennacl::range r3(matrix_size3, 2*matrix_size3);
+ viennacl::matrix_range<MatrixTypeA> vcl_A(vcl_A_full, r1, r2);
+ viennacl::matrix_range<MatrixTypeB> vcl_B(vcl_B_full, r2, r3);
+ viennacl::matrix_range<MatrixTypeA> vcl_A_trans(vcl_A_trans_full, r2, r1);
+ viennacl::matrix_range<MatrixTypeB> vcl_B_trans(vcl_B_trans_full, r3, r2);
+ viennacl::matrix_range<MatrixTypeC> vcl_C(vcl_C_full, r1, r3);
+
+
+ viennacl::copy(A, vcl_A);
+ viennacl::copy(B, vcl_B);
+ viennacl::copy(A_trans, vcl_A_trans);
+ viennacl::copy(B_trans, vcl_B_trans);
+
+ // Test: C = A * B --------------------------------------------------------------------------
+ C = viennacl::linalg::prod(A, B);
+ vcl_C = viennacl::linalg::prod(vcl_A, vcl_B);
+ act_diff = fabs(diff(C, vcl_C));
+
+ if( act_diff > epsilon )
+ {
+ std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+ std::cout << " diff: " << act_diff << std::endl;
+ retval = EXIT_FAILURE;
+ }
+ else
+ std::cout << "Test C = A * B passed!" << std::endl;
+
+ // Test: C = A * trans(B) --------------------------------------------------------------------------
+ C = boost::numeric::ublas::prod(A, trans(B_trans));
+ vcl_C = viennacl::linalg::prod(vcl_A, trans(vcl_B_trans));
+ act_diff = fabs(diff(C, vcl_C));
+
+ if( act_diff > epsilon )
+ {
+ std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+ std::cout << " diff: " << act_diff << std::endl;
+ retval = EXIT_FAILURE;
+ }
+ else
+ std::cout << "Test C = A * trans(B) passed!" << std::endl;
+
+ // Test: C = trans(A) * B --------------------------------------------------------------------------
+ C = boost::numeric::ublas::prod(trans(A_trans), B);
+ vcl_C = viennacl::linalg::prod(trans(vcl_A_trans), vcl_B);
+ act_diff = fabs(diff(C, vcl_C));
+
+ if( act_diff > epsilon )
+ {
+ std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+ std::cout << " diff: " << act_diff << std::endl;
+ retval = EXIT_FAILURE;
+ }
+ else
+ std::cout << "Test C = trans(A) * B passed!" << std::endl;
+
+
+ // Test: C = trans(A) * trans(B) --------------------------------------------------------------------------
+ C = boost::numeric::ublas::prod(trans(A_trans), trans(B_trans));
+ vcl_C = viennacl::linalg::prod(trans(vcl_A_trans), trans(vcl_B_trans));
+ act_diff = fabs(diff(C, vcl_C));
+
+ if( act_diff > epsilon )
+ {
+ std::cout << "# Error at operation: matrix-matrix product" << std::endl;
+ std::cout << " diff: " << act_diff << std::endl;
+ retval = EXIT_FAILURE;
+ }
+ else
+ std::cout << "Test C = trans(A) * trans(B) passed!" << std::endl;
+
+
+
+ return retval;
+}
+
+
+/*
+template <typename RHSTypeRef, typename RHSTypeCheck, typename Epsilon >
+void run_solver_check(RHSTypeRef & B_ref, RHSTypeCheck & B_check, int & retval, Epsilon const & epsilon)
+{
+ double act_diff = fabs(diff(B_ref, B_check));
+ if( act_diff > epsilon )
+ {
+ std::cout << " FAILED!" << std::endl;
+ std::cout << "# Error at operation: matrix-matrix solve" << std::endl;
+ std::cout << " diff: " << act_diff << std::endl;
+ retval = EXIT_FAILURE;
+ }
+ else
+ std::cout << " passed! " << act_diff << std::endl;
+
+}
+
+template< typename NumericT, typename MatrixTypeA, typename MatrixTypeB, typename Epsilon >
+int test_solve(Epsilon const& epsilon)
+{
+ int retval = EXIT_SUCCESS;
+ long matrix_size = 83; //some odd number, not too large
+ long rhs_num = 61;
+
+ // --------------------------------------------------------------------------
+ ublas::matrix<NumericT> A(matrix_size, matrix_size);
+ ublas::matrix<NumericT> B_start(matrix_size, rhs_num);
+ ublas::matrix<NumericT> C_start(rhs_num, matrix_size);
+
+ //fill A and B:
+ for (unsigned int i = 0; i < A.size1(); ++i)
+ {
+ for (unsigned int j = 0; j < A.size2(); ++j)
+ A(i,j) = static_cast<NumericT>(-0.5) * random<NumericT>();
+ A(i,i) = 1.0 + 2.0 * random<NumericT>(); //some extra weight on diagonal for stability
+ }
+
+ for (unsigned int i = 0; i < B_start.size1(); ++i)
+ for (unsigned int j = 0; j < B_start.size2(); ++j)
+ B_start(i,j) = random<NumericT>();
+
+ for (unsigned int i = 0; i < C_start.size1(); ++i)
+ for (unsigned int j = 0; j < C_start.size2(); ++j)
+ C_start(i,j) = random<NumericT>();
+
+ ublas::matrix<NumericT> B = B_start;
+ ublas::matrix<NumericT> result = B_start;
+ ublas::matrix<NumericT> C = C_start;
+ ublas::matrix<NumericT> A_trans = trans(A);
+ ublas::matrix<NumericT> C_trans = trans(C);
+
+
+ MatrixTypeA vcl_A(matrix_size, matrix_size);
+ MatrixTypeB vcl_B(matrix_size, rhs_num);
+ MatrixTypeB vcl_result(matrix_size, rhs_num);
+ MatrixTypeB vcl_C(rhs_num, matrix_size);
+ MatrixTypeB vcl_C_result(rhs_num, matrix_size);
+
+
+ viennacl::copy(A, vcl_A);
+ viennacl::copy(B, vcl_B);
+ viennacl::copy(C, vcl_C);
+
+ // Test: A \ B with various tags --------------------------------------------------------------------------
+ std::cout << "Testing A \\ B: " << std::endl;
+ std::cout << " * upper_tag: ";
+ result = ublas::solve(A, B, ublas::upper_tag());
+ vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::upper_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ std::cout << " * unit_upper_tag: ";
+ result = ublas::solve(A, B, ublas::unit_upper_tag());
+ vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::unit_upper_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ std::cout << " * lower_tag: ";
+ result = ublas::solve(A, B, ublas::lower_tag());
+ vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::lower_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ std::cout << " * unit_lower_tag: ";
+ result = ublas::solve(A, B, ublas::unit_lower_tag());
+ vcl_result = viennacl::linalg::solve(vcl_A, vcl_B, viennacl::linalg::unit_lower_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ if (retval == EXIT_SUCCESS)
+ std::cout << "Test A \\ B passed!" << std::endl;
+
+ B = B_start;
+ C = C_start;
+
+ // Test: A \ B^T --------------------------------------------------------------------------
+ std::cout << "Testing A \\ B^T: " << std::endl;
+ std::cout << " * upper_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ //check solve():
+ result = ublas::solve(A, C_trans, ublas::upper_tag());
+ vcl_result = viennacl::linalg::solve(vcl_A, trans(vcl_C), viennacl::linalg::upper_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+ //check compute kernels:
+ std::cout << " * upper_tag: ";
+ ublas::inplace_solve(A, C_trans, ublas::upper_tag());
+ viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::upper_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ std::cout << " * unit_upper_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ ublas::inplace_solve(A, C_trans, ublas::unit_upper_tag());
+ viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::unit_upper_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ std::cout << " * lower_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ ublas::inplace_solve(A, C_trans, ublas::lower_tag());
+ viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::lower_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ std::cout << " * unit_lower_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ ublas::inplace_solve(A, C_trans, ublas::unit_lower_tag());
+ viennacl::linalg::inplace_solve(vcl_A, trans(vcl_C), viennacl::linalg::unit_lower_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ if (retval == EXIT_SUCCESS)
+ std::cout << "Test A \\ B^T passed!" << std::endl;
+
+ B = B_start;
+ C = C_start;
+
+ // Test: A \ B with various tags --------------------------------------------------------------------------
+ std::cout << "Testing A^T \\ B: " << std::endl;
+ std::cout << " * upper_tag: ";
+ viennacl::copy(B, vcl_B);
+ result = ublas::solve(trans(A), B, ublas::upper_tag());
+ vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::upper_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ std::cout << " * unit_upper_tag: ";
+ viennacl::copy(B, vcl_B);
+ result = ublas::solve(trans(A), B, ublas::unit_upper_tag());
+ vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::unit_upper_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ std::cout << " * lower_tag: ";
+ viennacl::copy(B, vcl_B);
+ result = ublas::solve(trans(A), B, ublas::lower_tag());
+ vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::lower_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ std::cout << " * unit_lower_tag: ";
+ viennacl::copy(B, vcl_B);
+ result = ublas::solve(trans(A), B, ublas::unit_lower_tag());
+ vcl_result = viennacl::linalg::solve(trans(vcl_A), vcl_B, viennacl::linalg::unit_lower_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+
+ if (retval == EXIT_SUCCESS)
+ std::cout << "Test A^T \\ B passed!" << std::endl;
+
+ B = B_start;
+ C = C_start;
+
+ // Test: A^T \ B^T --------------------------------------------------------------------------
+ std::cout << "Testing A^T \\ B^T: " << std::endl;
+ std::cout << " * upper_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ //check solve():
+ result = ublas::solve(trans(A), C_trans, ublas::upper_tag());
+ vcl_result = viennacl::linalg::solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::upper_tag());
+ run_solver_check(result, vcl_result, retval, epsilon);
+ //check kernels:
+ std::cout << " * upper_tag: ";
+ ublas::inplace_solve(trans(A), C_trans, ublas::upper_tag());
+ viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::upper_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ std::cout << " * unit_upper_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ ublas::inplace_solve(trans(A), C_trans, ublas::unit_upper_tag());
+ viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::unit_upper_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ std::cout << " * lower_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ ublas::inplace_solve(trans(A), C_trans, ublas::lower_tag());
+ viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::lower_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ std::cout << " * unit_lower_tag: ";
+ viennacl::copy(C, vcl_C); C_trans = trans(C);
+ ublas::inplace_solve(trans(A), C_trans, ublas::unit_lower_tag());
+ viennacl::linalg::inplace_solve(trans(vcl_A), trans(vcl_C), viennacl::linalg::unit_lower_tag());
+ C = trans(C_trans); run_solver_check(C, vcl_C, retval, epsilon);
+
+ if (retval == EXIT_SUCCESS)
+ std::cout << "Test A^T \\ B^T passed!" << std::endl;
+
+ return retval;
+} */
+
+template< typename NumericT, typename Epsilon >
+int test(Epsilon const& epsilon)
+{
+ int ret;
+
+ std::cout << "--- Part 1: Testing matrix-matrix products ---" << std::endl;
+
+ //
+ //
+ std::cout << "Now using A=row, B=row, C=row" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::row_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ //
+ //
+ std::cout << "Now using A=row, B=row, C=column" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::column_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ //
+ //
+ std::cout << "Now using A=row, B=column, C=row" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::row_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ //
+ //
+ std::cout << "Now using A=row, B=column, C=column" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::column_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+
+
+ //
+ //
+ std::cout << "Now using A=column, B=row, C=row" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::row_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ //
+ //
+ std::cout << "Now using A=column, B=row, C=column" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::column_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ //
+ //
+ std::cout << "Now using A=column, B=column, C=row" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::row_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ //
+ //
+ std::cout << "Now using A=column, B=column, C=column" << std::endl;
+ ret = test_prod<NumericT,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::column_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ /*
+ std::cout << "--- Part 2: Testing matrix-matrix solver ---" << std::endl;
+
+ std::cout << "Now using A=row, B=row" << std::endl;
+ ret = test_solve<NumericT,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::row_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ std::cout << "Now using A=row, B=col" << std::endl;
+ ret = test_solve<NumericT,
+ viennacl::matrix<NumericT, viennacl::row_major>,
+ viennacl::matrix<NumericT, viennacl::column_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ std::cout << "Now using A=col, B=row" << std::endl;
+ ret = test_solve<NumericT,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::row_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret;
+
+ std::cout << "Now using A=col, B=col" << std::endl;
+ ret = test_solve<NumericT,
+ viennacl::matrix<NumericT, viennacl::column_major>,
+ viennacl::matrix<NumericT, viennacl::column_major> >(epsilon);
+ if (ret != EXIT_SUCCESS)
+ return ret; */
+
+ return ret;
+}
+
+
+//
+// -------------------------------------------------------------
+//
+int main()
+{
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "## Test :: BLAS 3 routines" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << std::endl;
+
+ int retval = EXIT_SUCCESS;
+
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << std::endl;
+ {
+ typedef float NumericT;
+ NumericT epsilon = 1.0E-3;
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << epsilon << std::endl;
+ std::cout << " numeric: float" << std::endl;
+ retval = test<NumericT>(epsilon);
+ if( retval == EXIT_SUCCESS )
+ std::cout << "# Test passed" << std::endl;
+ else
+ return retval;
+ }
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << std::endl;
+ if( viennacl::ocl::current_device().double_support() )
+ {
+ {
+ typedef double NumericT;
+ NumericT epsilon = 1.0E-11;
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << epsilon << std::endl;
+ std::cout << " numeric: double" << std::endl;
+ retval = test<NumericT>(epsilon);
+ if( retval == EXIT_SUCCESS )
+ std::cout << "# Test passed" << std::endl;
+ else
+ return retval;
+ }
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << std::endl;
+ }
+ return retval;
+}
diff --git a/tests/src/external_1.cpp b/tests/src/external_1.cpp
index 1bfc7fe..593b80b 100644
--- a/tests/src/external_1.cpp
+++ b/tests/src/external_1.cpp
@@ -1,22 +1,27 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//
// A check for the absence of external linkage (otherwise, library is not truly 'header-only')
//
+//#define VIENNACL_HAVE_EIGEN
+#define VIENNACL_HAVE_UBLAS
+
//
// *** System
//
@@ -31,15 +36,26 @@
#include "viennacl/matrix.hpp"
#include "viennacl/compressed_matrix.hpp"
#include "viennacl/coordinate_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
#include "viennacl/linalg/ilu.hpp"
#include "viennacl/linalg/row_scaling.hpp"
#include "viennacl/linalg/jacobi_precond.hpp"
+#include "viennacl/linalg/amg.hpp"
+#include "viennacl/linalg/spai.hpp"
#include "viennacl/linalg/cg.hpp"
#include "viennacl/linalg/bicgstab.hpp"
#include "viennacl/linalg/gmres.hpp"
#include "viennacl/linalg/direct_solve.hpp"
+#include "viennacl/linalg/qr.hpp"
+
+#include "viennacl/fft.hpp"
+#include "viennacl/misc/bandwidth_reduction.hpp"
+#include "viennacl/io/kernel_parameters.hpp"
#include "viennacl/io/matrix_market.hpp"
diff --git a/tests/src/external_2.cpp b/tests/src/external_2.cpp
index b1c17d1..0689de5 100644
--- a/tests/src/external_2.cpp
+++ b/tests/src/external_2.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//
// A check for the absence of external linkage (otherwise, library is not truly 'header-only')
@@ -31,6 +33,10 @@
#include "viennacl/matrix.hpp"
#include "viennacl/compressed_matrix.hpp"
#include "viennacl/coordinate_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
#include "viennacl/linalg/ilu.hpp"
#include "viennacl/linalg/row_scaling.hpp"
@@ -40,6 +46,10 @@
#include "viennacl/linalg/gmres.hpp"
#include "viennacl/linalg/direct_solve.hpp"
+#include "viennacl/fft.hpp"
+#include "viennacl/misc/bandwidth_reduction.hpp"
+
+#include "viennacl/io/kernel_parameters.hpp"
#include "viennacl/io/matrix_market.hpp"
void other_func()
diff --git a/tests/src/fft.cpp b/tests/src/fft.cpp
new file mode 100644
index 0000000..015cd26
--- /dev/null
+++ b/tests/src/fft.cpp
@@ -0,0 +1,366 @@
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <iostream>
+#include <vector>
+#include <cmath>
+#include <complex>
+#include <fstream>
+#include <algorithm>
+
+//#define VIENNACL_BUILD_INFO
+
+#include "viennacl/fft.hpp"
+
+typedef float ScalarType;
+
+const ScalarType EPS = 0.06; //use smaller values in double precision
+
+typedef ScalarType (*test_function_ptr)(std::vector<ScalarType>&,
+ std::vector<ScalarType>&,
+ unsigned int,
+ unsigned int,
+ unsigned int);
+typedef void (*input_function_ptr)(std::istream&,
+ std::vector<ScalarType>&,
+ std::vector<ScalarType>&,
+ unsigned int&,
+ unsigned int&,
+ unsigned int&);
+
+void read_vectors_pair(std::istream& str,
+ std::vector<ScalarType>& input,
+ std::vector<ScalarType>& output,
+ unsigned int& rows,
+ unsigned int& cols,
+ unsigned int& batch_size)
+{
+ rows = 1;
+
+ str >> cols >> batch_size;
+ input.resize(2 * cols * batch_size);
+ output.resize(2 * cols * batch_size);
+
+ for(unsigned int i = 0; i < input.size(); i++)
+ str >> input[i];
+
+ for(unsigned int i = 0; i < output.size(); i++)
+ str >> output[i];
+}
+
+void read_matrices_pair(std::istream& str,
+ std::vector<ScalarType>& input,
+ std::vector<ScalarType>& output,
+ unsigned int& rows,
+ unsigned int& cols,
+ unsigned int& batch_size)
+{
+ batch_size = 1;
+ str >> rows >> cols;
+
+ input.resize(2 * rows * cols);
+ output.resize(2 * rows * cols);
+
+ for(unsigned int i = 0; i < input.size(); i++) {
+ str >> input[i];
+ }
+
+ for(unsigned int i = 0; i < output.size(); i++) {
+ str >> output[i];
+ }
+}
+
+template <typename ScalarType>
+ScalarType diff(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref)
+{
+ ScalarType df = 0.0;
+ ScalarType norm_ref = 0;
+
+ for(std::size_t i = 0; i < vec.size(); i++)
+ {
+ df = df + pow(vec[i] - ref[i], 2);
+ norm_ref += ref[i] * ref[i];
+ }
+
+ return sqrt(df / norm_ref) ;
+}
+
+template <typename ScalarType>
+ScalarType diff_max(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref)
+{
+ ScalarType df = 0.0;
+ ScalarType mx = 0.0;
+ ScalarType norm_max = 0;
+
+ for (std::size_t i = 0; i < vec.size(); i++)
+ {
+ df = std::max<ScalarType>(fabs(vec[i] - ref[i]), df);
+ mx = std::max<ScalarType>(fabs(vec[i]), mx);
+
+ if (mx > 0)
+ {
+ if (norm_max < df / mx)
+ norm_max = df / mx;
+ }
+ }
+
+ return norm_max;
+}
+
+void convolve_ref(std::vector<ScalarType>& in1,
+ std::vector<ScalarType>& in2,
+ std::vector<ScalarType>& out)
+{
+ out.resize(in1.size());
+ unsigned int data_size = in1.size() >> 1;
+
+ for(unsigned int n = 0; n < data_size; n++) {
+ std::complex<ScalarType> el;
+ for(unsigned int k = 0; k < data_size; k++) {
+ int offset = (n - k);
+ if(offset < 0) offset += data_size;
+ std::complex<ScalarType> m1(in1[2*k], in1[2*k + 1]);
+ std::complex<ScalarType> m2(in2[2*offset], in2[2*offset + 1]);
+// std::cout << offset << " " << m1 << " " << m2 << "\n";
+ el = el + m1 * m2 ;
+ }
+ //std::cout << "Answer - " << el << "\n";
+ out[2*n] = el.real();
+ out[2*n + 1] = el.imag();
+ }
+}
+
+ScalarType opencl_fft(std::vector<ScalarType>& in,
+ std::vector<ScalarType>& out,
+ unsigned int row, unsigned int col, unsigned int batch_size)
+{
+ viennacl::vector<ScalarType> input(in.size());
+ viennacl::vector<ScalarType> output(in.size());
+
+ std::vector<ScalarType> res(in.size());
+
+ viennacl::fast_copy(in, input);
+
+ viennacl::fft(input, output, batch_size);
+
+ viennacl::fast_copy(output, res);
+
+ return diff_max(res, out);
+}
+
+ScalarType opencl_2d_fft_1arg(std::vector<ScalarType>& in,
+ std::vector<ScalarType>& out,
+ unsigned int row, unsigned int col, unsigned int batch_size)
+{
+ viennacl::matrix<ScalarType> input(row, 2 * col);
+
+ std::vector<ScalarType> res(in.size());
+
+ viennacl::fast_copy(&in[0], &in[0] + in.size(), input);
+ //std::cout << input << "\n";
+ viennacl::inplace_fft(input);
+ //std::cout << input << "\n";
+ viennacl::fast_copy(input, &res[0]);
+
+ return diff_max(res, out);
+}
+
+ScalarType opencl_2d_fft_2arg(std::vector<ScalarType>& in,
+ std::vector<ScalarType>& out,
+ unsigned int row, unsigned int col, unsigned int batch_size)
+{
+ viennacl::matrix<ScalarType> input(row, 2 * col);
+ viennacl::matrix<ScalarType> output(row, 2 * col);
+
+ std::vector<ScalarType> res(in.size());
+
+ viennacl::fast_copy(&in[0], &in[0] + in.size(), input);
+ //std::cout << input << "\n";
+ viennacl::fft(input, output);
+ //std::cout << input << "\n";
+ viennacl::fast_copy(output, &res[0]);
+
+ return diff_max(res, out);
+}
+
+ScalarType opencl_direct(std::vector<ScalarType>& in,
+ std::vector<ScalarType>& out,
+ unsigned int row, unsigned int col, unsigned int batch_num)
+{
+ viennacl::vector<ScalarType> input(in.size());
+ viennacl::vector<ScalarType> output(in.size());
+
+ std::vector<ScalarType> res(in.size());
+
+ viennacl::fast_copy(in, input);
+
+ unsigned int size = (input.size() >> 1) / batch_num;
+
+ viennacl::detail::fft::direct<ScalarType>(input.handle(), output.handle(), size, size, batch_num);
+
+ viennacl::fast_copy(output, res);
+
+ return diff_max(res, out);
+}
+
+ScalarType opencl_bluestein(std::vector<ScalarType>& in,
+ std::vector<ScalarType>& out,
+ unsigned int row, unsigned int col, unsigned int batch_size)
+{
+ viennacl::vector<ScalarType> input(in.size());
+ viennacl::vector<ScalarType> output(in.size());
+
+ std::vector<ScalarType> res(in.size());
+
+ viennacl::fast_copy(in, input);
+
+ viennacl::detail::fft::bluestein(input, output, batch_size);
+
+ viennacl::fast_copy(output, res);
+
+ return diff_max(res, out);
+}
+
+ScalarType opencl_radix2(std::vector<ScalarType>& in,
+ std::vector<ScalarType>& out,
+ unsigned int row, unsigned int col, unsigned int batch_num)
+{
+ viennacl::vector<ScalarType> input(in.size());
+ viennacl::vector<ScalarType> output(in.size());
+
+ std::vector<ScalarType> res(in.size());
+
+ viennacl::fast_copy(in, input);
+
+ unsigned int size = (input.size() >> 1) / batch_num;
+
+ viennacl::detail::fft::radix2<ScalarType>(input.handle(), size, size, batch_num);
+
+ viennacl::fast_copy(input, res);
+
+ return diff_max(res, out);
+}
+
+ScalarType opencl_convolve(std::vector<ScalarType>& in1,
+ std::vector<ScalarType>& in2,
+ unsigned int row, unsigned int col, unsigned int batch_size)
+{
+ //if(in1.size() > 2048) return -1;
+ viennacl::vector<ScalarType> input1(in1.size());
+ viennacl::vector<ScalarType> input2(in2.size());
+ viennacl::vector<ScalarType> output(in1.size());
+
+ viennacl::fast_copy(in1, input1);
+ viennacl::fast_copy(in2, input2);
+
+ viennacl::linalg::convolve(input1, input2, output);
+
+ std::vector<ScalarType> res(in1.size());
+ viennacl::fast_copy(output, res);
+
+ std::vector<ScalarType> ref(in1.size());
+ convolve_ref(in1, in2, ref);
+
+ return diff_max(res, ref);
+}
+
+int test_correctness(const std::string& log_tag,
+ const std::string& filename,
+ input_function_ptr input_function,
+ test_function_ptr func) {
+
+ std::vector<ScalarType> input;
+ std::vector<ScalarType> output;
+
+ std::fstream fstr;
+
+ fstr.open(filename.c_str());
+
+ std::cout << "*****************" << log_tag << "***************************\n";
+
+ unsigned int test_size = 0;
+
+ fstr >> test_size;
+
+ std::cout << "Test size: " << test_size << std::endl;
+
+ for(unsigned int i = 0; i < test_size; i++) {
+ unsigned int batch_size;
+ unsigned int rows_num, cols_num;
+ input_function(fstr, input, output, rows_num, cols_num, batch_size);
+ ScalarType df = func(input, output, rows_num, cols_num, batch_size);
+ printf("%7s NX=%6d NY=%6d; BATCH=%3d; DIFF=%3.15f;\n", ((fabs(df) < EPS)?"[Ok]":"[Fail]"), rows_num, cols_num, batch_size, df);
+ if (df > EPS)
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+
+
+int main() {
+ std::cout << "*" << std::endl;
+ std::cout << "* ViennaCL test: FFT" << std::endl;
+ std::cout << "*" << std::endl;
+
+ //1D FFT tests
+ if (test_correctness("fft::direct", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_direct) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::fft", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_fft) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::batch::direct", "../non-release/testdata/batch_radix.data", read_vectors_pair, &opencl_direct) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::radix2", "../non-release/testdata/radix2.data", read_vectors_pair, &opencl_radix2) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::batch::radix2", "../non-release/testdata/batch_radix.data", read_vectors_pair, &opencl_radix2) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::batch::fft", "../non-release/testdata/batch_radix.data", read_vectors_pair, &opencl_fft) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::convolve::1", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_convolve) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::convolve::2", "../non-release/testdata/radix2.data", read_vectors_pair, &opencl_convolve) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::bluestein::1", "../non-release/testdata/cufft.data", read_vectors_pair, &opencl_bluestein) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft::bluestein::2", "../non-release/testdata/radix2.data", read_vectors_pair, &opencl_bluestein) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ //2D FFT tests
+ if (test_correctness("fft:2d::radix2::sml::1_arg",
+ "../non-release/testdata/fft2d_radix2.data", read_matrices_pair, &opencl_2d_fft_1arg) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft:2d::direct::sml::1_arg",
+ "../non-release/testdata/fft2d_direct.data", read_matrices_pair, &opencl_2d_fft_1arg) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft:2d::direct::big::1_arg",
+ "../non-release/testdata/fft2d_direct_big.data", read_matrices_pair, &opencl_2d_fft_1arg) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ if (test_correctness("fft:2d::radix2::sml::2_arg",
+ "../non-release/testdata/fft2d_radix2.data", read_matrices_pair, &opencl_2d_fft_2arg) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft:2d::direct::sml::2_arg",
+ "../non-release/testdata/fft2d_direct.data", read_matrices_pair, &opencl_2d_fft_2arg) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ if (test_correctness("fft:2d::direct::bscalarig::2_arg",
+ "../non-release/testdata/fft2d_direct_big.data", read_matrices_pair, &opencl_2d_fft_2arg) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/src/iterators.cpp b/tests/src/iterators.cpp
index 7f1923e..db8913c 100644
--- a/tests/src/iterators.cpp
+++ b/tests/src/iterators.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//
// *** System
diff --git a/tests/src/matrix.cpp b/tests/src/matrix.cpp
index 56caaab..b51c36c 100644
--- a/tests/src/matrix.cpp
+++ b/tests/src/matrix.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//
// *** System
@@ -101,12 +103,16 @@ template< typename NumericT, typename F, typename Epsilon >
int test(Epsilon const& epsilon)
{
int retval = EXIT_SUCCESS;
+
+ std::size_t num_rows = 121;
+ std::size_t num_cols = 103;
+
// --------------------------------------------------------------------------
- ublas::vector<NumericT> rhs(12);
+ ublas::vector<NumericT> rhs(num_rows);
for (unsigned int i = 0; i < rhs.size(); ++i)
rhs(i) = random<NumericT>();
ublas::vector<NumericT> rhs2 = rhs;
- ublas::vector<NumericT> result = ublas::scalar_vector<NumericT>(10, 3.1415);
+ ublas::vector<NumericT> result = ublas::scalar_vector<NumericT>(num_cols, 3.1415);
ublas::vector<NumericT> result2 = result;
ublas::vector<NumericT> rhs_trans = rhs;
rhs_trans.resize(result.size(), true);
@@ -123,21 +129,21 @@ int test(Epsilon const& epsilon)
viennacl::vector<NumericT> vcl_rhs_trans(rhs_trans.size());
viennacl::vector<NumericT> vcl_result_trans(result_trans.size());
viennacl::vector<NumericT> vcl_result(result.size());
- viennacl::matrix<NumericT, F> vcl_matrix(rhs.size(), rhs.size());
+ viennacl::matrix<NumericT, F> vcl_matrix(result.size(), rhs.size());
- copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
- copy(result, vcl_result);
- copy(matrix, vcl_matrix);
+ viennacl::copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ viennacl::copy(result, vcl_result);
+ viennacl::copy(matrix, vcl_matrix);
std::cout << "Matrix resizing (to larger)" << std::endl;
- matrix.resize(20, 17, true);
+ matrix.resize(2*num_rows, 2*num_cols, true);
for (unsigned int i = 0; i < matrix.size1(); ++i)
{
for (unsigned int j = (i<result.size() ? rhs.size() : 0); j < matrix.size2(); ++j)
matrix(i,j) = 0;
}
- vcl_matrix.resize(20, 17, true);
- copy(vcl_matrix, matrix);
+ vcl_matrix.resize(2*num_rows, 2*num_cols, true);
+ viennacl::copy(vcl_matrix, matrix);
if( fabs(diff(matrix, vcl_matrix)) > epsilon )
{
std::cout << "# Error at operation: matrix resize (to larger)" << std::endl;
@@ -145,12 +151,12 @@ int test(Epsilon const& epsilon)
return EXIT_FAILURE;
}
- matrix(12, 14) = 1.9;
- matrix(19, 16) = 1.0;
- matrix (13, 15) = -9;
- vcl_matrix(12, 14) = 1.9;
- vcl_matrix(19, 16) = 1.0;
- vcl_matrix (13, 15) = -9;
+ matrix(12, 14) = NumericT(1.9);
+ matrix(19, 16) = NumericT(1.0);
+ matrix (13, 15) = NumericT(-9);
+ vcl_matrix(12, 14) = NumericT(1.9);
+ vcl_matrix(19, 16) = NumericT(1.0);
+ vcl_matrix (13, 15) = NumericT(-9);
std::cout << "Matrix resizing (to smaller)" << std::endl;
matrix.resize(result.size(), rhs.size(), true);
@@ -202,13 +208,18 @@ int test(Epsilon const& epsilon)
}
//reset vcl_matrix:
- copy(matrix, vcl_matrix);
+ viennacl::copy(matrix, vcl_matrix);
// --------------------------------------------------------------------------
std::cout << "Matrix-Vector product" << std::endl;
result = viennacl::linalg::prod(matrix, rhs);
vcl_result = viennacl::linalg::prod(vcl_matrix, vcl_rhs);
+ for (std::size_t i=0; i<result.size(); ++i)
+ {
+ std::cout << rhs(i) << ", " << vcl_rhs(i) << ", " << result(i) << ", " << vcl_result(i) << std::endl;
+ }
+
if( fabs(diff(result, vcl_result)) > epsilon )
{
std::cout << "# Error at operation: matrix-vector product" << std::endl;
@@ -217,10 +228,10 @@ int test(Epsilon const& epsilon)
}
// --------------------------------------------------------------------------
std::cout << "Matrix-Vector product with scaled add" << std::endl;
- NumericT alpha(2.786);
- NumericT beta(1.432);
- copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
- copy(result.begin(), result.end(), vcl_result.begin());
+ NumericT alpha = static_cast<NumericT>(2.786);
+ NumericT beta = static_cast<NumericT>(1.432);
+ viennacl::copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ viennacl::copy(result.begin(), result.end(), vcl_result.begin());
result = alpha * viennacl::linalg::prod(matrix, rhs) + beta * result;
vcl_result = alpha * viennacl::linalg::prod(vcl_matrix, vcl_rhs) + beta * vcl_result;
@@ -233,8 +244,8 @@ int test(Epsilon const& epsilon)
}
// --------------------------------------------------------------------------
- copy(rhs_trans.begin(), rhs_trans.end(), vcl_rhs_trans.begin());
- copy(result_trans.begin(), result_trans.end(), vcl_result_trans.begin());
+ viennacl::copy(rhs_trans.begin(), rhs_trans.end(), vcl_rhs_trans.begin());
+ viennacl::copy(result_trans.begin(), result_trans.end(), vcl_result_trans.begin());
std::cout << "Transposed Matrix-Vector product" << std::endl;
result_trans = alpha * viennacl::linalg::prod(trans(matrix), rhs_trans);
@@ -284,8 +295,8 @@ int test(Epsilon const& epsilon)
for (unsigned int i = 0; i < matrix.size1(); ++i)
matrix(i,i) = static_cast<NumericT>(3) + random<NumericT>();
- copy(matrix, vcl_matrix);
- copy(rhs, vcl_rhs);
+ viennacl::copy(matrix, vcl_matrix);
+ viennacl::copy(rhs, vcl_rhs);
//upper triangular:
std::cout << "Upper triangular solver" << std::endl;
@@ -300,7 +311,7 @@ int test(Epsilon const& epsilon)
//upper unit triangular:
std::cout << "Upper unit triangular solver" << std::endl;
- copy(rhs, vcl_rhs);
+ viennacl::copy(rhs, vcl_rhs);
result = ublas::solve(matrix, rhs, ublas::unit_upper_tag());
vcl_result = viennacl::linalg::solve(vcl_matrix, vcl_rhs, viennacl::linalg::unit_upper_tag());
if( fabs(diff(result, vcl_result)) > epsilon )
@@ -312,7 +323,7 @@ int test(Epsilon const& epsilon)
//lower triangular:
std::cout << "Lower triangular solver" << std::endl;
- copy(rhs, vcl_rhs);
+ viennacl::copy(rhs, vcl_rhs);
result = ublas::solve(matrix, rhs, ublas::lower_tag());
vcl_result = viennacl::linalg::solve(vcl_matrix, vcl_rhs, viennacl::linalg::lower_tag());
if( fabs(diff(result, vcl_result)) > epsilon )
@@ -324,7 +335,7 @@ int test(Epsilon const& epsilon)
//lower unit triangular:
std::cout << "Lower unit triangular solver" << std::endl;
- copy(rhs, vcl_rhs);
+ viennacl::copy(rhs, vcl_rhs);
result = ublas::solve(matrix, rhs, ublas::unit_lower_tag());
vcl_result = viennacl::linalg::solve(vcl_matrix, vcl_rhs, viennacl::linalg::unit_lower_tag());
if( fabs(diff(result, vcl_result)) > epsilon )
@@ -340,7 +351,7 @@ int test(Epsilon const& epsilon)
//transposed upper triangular:
std::cout << "Transposed upper triangular solver" << std::endl;
- copy(rhs, vcl_rhs);
+ viennacl::copy(rhs, vcl_rhs);
result = ublas::solve(trans(matrix), rhs, ublas::upper_tag());
vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::upper_tag());
if( fabs(diff(result, vcl_result)) > epsilon )
@@ -352,7 +363,7 @@ int test(Epsilon const& epsilon)
//transposed upper unit triangular:
std::cout << "Transposed unit upper triangular solver" << std::endl;
- copy(rhs, vcl_rhs);
+ viennacl::copy(rhs, vcl_rhs);
result = ublas::solve(trans(matrix), rhs, ublas::unit_upper_tag());
vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::unit_upper_tag());
if( fabs(diff(result, vcl_result)) > epsilon )
@@ -364,7 +375,7 @@ int test(Epsilon const& epsilon)
//transposed lower triangular:
std::cout << "Transposed lower triangular solver" << std::endl;
- copy(rhs, vcl_rhs);
+ viennacl::copy(rhs, vcl_rhs);
result = ublas::solve(trans(matrix), rhs, ublas::lower_tag());
vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::lower_tag());
if( fabs(diff(result, vcl_result)) > epsilon )
@@ -376,7 +387,7 @@ int test(Epsilon const& epsilon)
//transposed lower unit triangular:
std::cout << "Transposed unit lower triangular solver" << std::endl;
- copy(rhs, vcl_rhs);
+ viennacl::copy(rhs, vcl_rhs);
result = ublas::solve(trans(matrix), rhs, ublas::unit_lower_tag());
vcl_result = viennacl::linalg::solve(trans(vcl_matrix), vcl_rhs, viennacl::linalg::unit_lower_tag());
if( fabs(diff(result, vcl_result)) > epsilon )
@@ -395,19 +406,19 @@ int test(Epsilon const& epsilon)
viennacl::matrix<NumericT, F> vcl_square_matrix(lu_dim, lu_dim);
viennacl::vector<NumericT> vcl_lu_rhs(lu_dim);
- for (size_t i=0; i<lu_dim; ++i)
- for (size_t j=0; j<lu_dim; ++j)
- square_matrix(i,j) = -0.5 * random<NumericT>();
+ for (std::size_t i=0; i<lu_dim; ++i)
+ for (std::size_t j=0; j<lu_dim; ++j)
+ square_matrix(i,j) = -static_cast<NumericT>(0.5) * random<NumericT>();
//put some more weight on diagonal elements:
- for (size_t j=0; j<lu_dim; ++j)
+ for (std::size_t j=0; j<lu_dim; ++j)
{
- square_matrix(j,j) = 20.0 + random<NumericT>();
+ square_matrix(j,j) = static_cast<NumericT>(20.0) + random<NumericT>();
lu_rhs(j) = random<NumericT>();
}
- copy(square_matrix, vcl_square_matrix);
- copy(lu_rhs, vcl_lu_rhs);
+ viennacl::copy(square_matrix, vcl_square_matrix);
+ viennacl::copy(lu_rhs, vcl_lu_rhs);
//ublas::
ublas::lu_factorize(square_matrix);
diff --git a/tests/src/matrix_range.cpp b/tests/src/matrix_range.cpp
new file mode 100644
index 0000000..4c1e816
--- /dev/null
+++ b/tests/src/matrix_range.cpp
@@ -0,0 +1,297 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#define VIENNACL_HAVE_UBLAS
+//#define NDEBUG
+//#define VIENNACL_BUILD_INFO
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <time.h>
+//#include "../benchmarks/benchmark-utils.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+/*#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"*/
+#include "viennacl/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+
+
+template <typename MatrixType, typename VCLMatrixType>
+bool check_for_equality(MatrixType const & ublas_A, VCLMatrixType const & vcl_A)
+{
+ typedef typename MatrixType::value_type value_type;
+
+ boost::numeric::ublas::matrix<value_type> vcl_A_cpu(vcl_A.size1(), vcl_A.size2());
+ viennacl::copy(vcl_A, vcl_A_cpu);
+
+ for (std::size_t i=0; i<ublas_A.size1(); ++i)
+ {
+ for (std::size_t j=0; j<ublas_A.size2(); ++j)
+ {
+ if (ublas_A(i,j) != vcl_A_cpu(i,j))
+ {
+ std::cout << "Error at index (" << i << ", " << j << "): " << ublas_A(i,j) << " vs " << vcl_A_cpu(i,j) << std::endl;
+ }
+ }
+ }
+ return true;
+}
+
+
+
+template <typename T, typename ScalarType>
+int run_test()
+{
+ //typedef float ScalarType;
+ typedef boost::numeric::ublas::matrix<ScalarType> MatrixType;
+
+ typedef viennacl::matrix<ScalarType, viennacl::row_major> VCLMatrixType;
+
+ std::size_t dim_large = 51;
+ std::size_t dim_small = 37;
+
+ //setup ublas objects:
+ MatrixType ublas_A(dim_large, dim_large);
+ for (std::size_t i=0; i<ublas_A.size1(); ++i)
+ for (std::size_t j=0; j<ublas_A.size2(); ++j)
+ ublas_A(i,j) = (i+1) + (j+1)*(i+1);
+
+ MatrixType ublas_B(dim_small, dim_small);
+ for (std::size_t i=0; i<ublas_B.size1(); ++i)
+ for (std::size_t j=0; j<ublas_B.size2(); ++j)
+ ublas_B(i,j) = (i+1) + (j+1)*(i+1);
+
+ MatrixType ublas_C(dim_large, dim_small);
+ for (std::size_t i=0; i<ublas_C.size1(); ++i)
+ for (std::size_t j=0; j<ublas_C.size2(); ++j)
+ ublas_C(i,j) = (j+2) + (j+1)*(i+1);
+
+ MatrixType ublas_D(dim_small, dim_large);
+ for (std::size_t i=0; i<ublas_D.size1(); ++i)
+ for (std::size_t j=0; j<ublas_D.size2(); ++j)
+ ublas_D(i,j) = (j+2) + (j+1)*(i+1);
+
+ boost::numeric::ublas::range ublas_r1(0, dim_small);
+ boost::numeric::ublas::range ublas_r2(dim_large - dim_small, dim_large);
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub1(ublas_A, ublas_r1, ublas_r1);
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_A_sub2(ublas_A, ublas_r2, ublas_r2);
+
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_C_sub(ublas_C, ublas_r1, ublas_r1);
+ boost::numeric::ublas::matrix_range<MatrixType> ublas_D_sub(ublas_D, ublas_r1, ublas_r1);
+
+ //Setup ViennaCL objects
+ VCLMatrixType vcl_A(dim_large, dim_large);
+ viennacl::copy(ublas_A, vcl_A);
+ VCLMatrixType vcl_B(dim_small, dim_small);
+ viennacl::copy(ublas_B, vcl_B);
+ VCLMatrixType vcl_C(dim_large, dim_small);
+ viennacl::copy(ublas_C, vcl_C);
+ VCLMatrixType vcl_D(dim_small, dim_large);
+ viennacl::copy(ublas_D, vcl_D);
+
+ viennacl::range vcl_r1(0, dim_small);
+ viennacl::range vcl_r2(dim_large - dim_small, dim_large);
+ viennacl::matrix_range<VCLMatrixType> vcl_A_sub1(vcl_A, vcl_r1, vcl_r1);
+ viennacl::matrix_range<VCLMatrixType> vcl_A_sub2(vcl_A, vcl_r2, vcl_r2);
+
+ viennacl::matrix_range<VCLMatrixType> vcl_C_sub(vcl_C, vcl_r1, vcl_r1);
+ viennacl::matrix_range<VCLMatrixType> vcl_D_sub(vcl_D, vcl_r1, vcl_r1);
+
+ std::cout << std::endl;
+ std::cout << "//" << std::endl;
+ std::cout << "////////// Test 1: Copy to GPU //////////" << std::endl;
+ std::cout << "//" << std::endl;
+
+ ublas_A_sub1 = ublas_B;
+ viennacl::copy(ublas_B, vcl_A_sub1);
+ std::cout << "Testing upper left copy to A... ";
+ if (check_for_equality(ublas_A, vcl_A))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ ublas_A_sub2 = ublas_B;
+ viennacl::copy(ublas_B, vcl_A_sub2);
+ std::cout << "Testing lower right copy to A... ";
+ if (check_for_equality(ublas_A, vcl_A))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+
+ ublas_C_sub = ublas_B;
+ viennacl::copy(ublas_B, vcl_C_sub);
+ std::cout << "Testing upper copy to C... ";
+ if (check_for_equality(ublas_C, vcl_C))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ ublas_D_sub = ublas_B;
+ viennacl::copy(ublas_B, vcl_D_sub);
+ std::cout << "Testing left copy to D... ";
+ if (check_for_equality(ublas_D, vcl_D))
+ std::cout << "PASSED!" << std::endl;
+ else
+ std::cout << std::endl << "TEST failed!";
+
+ std::cout << std::endl;
+ std::cout << "//" << std::endl;
+ std::cout << "////////// Test 2: Copy from GPU //////////" << std::endl;
+ std::cout << "//" << std::endl;
+
+ std::cout << "Testing upper left copy to A... ";
+ if (check_for_equality(ublas_A_sub1, vcl_A_sub1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "Testing lower right copy to A... ";
+ if (check_for_equality(ublas_A_sub2, vcl_A_sub2))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "Testing upper copy to C... ";
+ if (check_for_equality(ublas_C_sub, vcl_C_sub))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "Testing left copy to D... ";
+ if (check_for_equality(ublas_D_sub, vcl_D_sub))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ std::cout << "//" << std::endl;
+ std::cout << "////////// Test 2: Inplace add //////////" << std::endl;
+ std::cout << "//" << std::endl;
+ viennacl::copy(ublas_A_sub2, vcl_A_sub2);
+
+ ublas_A_sub2 += ublas_A_sub2;
+ vcl_A_sub2 += vcl_A_sub2;
+
+ if (check_for_equality(ublas_A_sub2, vcl_A_sub2))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "Inplace add to matrix: ";
+ ublas_B += ublas_A_sub2;
+ vcl_B += vcl_A_sub2;
+
+ if (check_for_equality(ublas_A, vcl_A))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "Inplace add of prod(): ";
+ ublas_A_sub1 += prod(ublas_C_sub, ublas_D_sub);
+ vcl_A_sub1 += viennacl::linalg::prod(vcl_C_sub, vcl_D_sub);
+
+ if (check_for_equality(ublas_A, vcl_A))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ return EXIT_SUCCESS;
+}
+
+int main (int argc, const char * argv[])
+{
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "## Test :: Matrix Range" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << 0 << std::endl;
+ std::cout << " numeric: float" << std::endl;
+ if (run_test<viennacl::row_major, float>() != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+ if (run_test<viennacl::column_major, float>() != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+
+
+ if( viennacl::ocl::current_device().double_support() )
+ {
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << 0 << std::endl;
+ std::cout << " numeric: double" << std::endl;
+
+ if (run_test<viennacl::row_major, double>() != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+ if (run_test<viennacl::column_major, double>() != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/tests/src/scalar.cpp b/tests/src/scalar.cpp
index b884429..5475d37 100644
--- a/tests/src/scalar.cpp
+++ b/tests/src/scalar.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//
// *** System
diff --git a/tests/src/sparse.cpp b/tests/src/sparse.cpp
index 4a23b41..85298c5 100644
--- a/tests/src/sparse.cpp
+++ b/tests/src/sparse.cpp
@@ -1,18 +1,22 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#define NDEBUG
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#ifndef NDEBUG
+ #define NDEBUG
+#endif
//
// *** System
diff --git a/tests/src/structured-matrices.cpp b/tests/src/structured-matrices.cpp
new file mode 100644
index 0000000..2b240b8
--- /dev/null
+++ b/tests/src/structured-matrices.cpp
@@ -0,0 +1,613 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <iostream>
+#include <vector>
+#include <cmath>
+#include <complex>
+#include <fstream>
+
+//#define VIENNACL_BUILD_INFO
+
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/circulant_matrix.hpp"
+#include "viennacl/vandermonde_matrix.hpp"
+#include "viennacl/hankel_matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+
+#include "viennacl/fft.hpp"
+
+//
+// A simple dense matrix class (in order to avoid an unnecessary boost dependency)
+//
+template <typename T>
+class dense_matrix
+{
+ public:
+ dense_matrix(std::size_t rows, std::size_t cols) : elements_(rows * cols), rows_(rows), cols_(cols) {}
+
+ T & operator()(std::size_t i, std::size_t j) { return elements_[i*cols_ + j]; }
+ T const & operator()(std::size_t i, std::size_t j) const { return elements_[i*cols_ + j]; }
+
+ std::size_t size1() const { return rows_; }
+ std::size_t size2() const { return cols_; }
+
+ dense_matrix & operator+=(dense_matrix const & other)
+ {
+ for(std::size_t i = 0; i < other.size1(); i++)
+ for(std::size_t j = 0; j < other.size2(); j++)
+ elements_[i*cols_ + j] = other.elements_[i*cols_+j];
+ return *this;
+ }
+
+ private:
+ std::vector<T> elements_;
+ std::size_t rows_;
+ std::size_t cols_;
+};
+
+template <typename T>
+std::ostream & operator<<(std::ostream & os, dense_matrix<T> const & mat)
+{
+ std::cout << "[" << mat.size1() << "," << mat.size2() << "](";
+ for (std::size_t i=0; i<mat.size1(); ++i)
+ {
+ std::cout << "(";
+ for (std::size_t j=0; j<mat.size2(); ++j)
+ std::cout << mat(i,j) << ",";
+ std::cout << ")";
+ }
+
+ return os;
+}
+
+
+template <typename ScalarType>
+ScalarType diff(dense_matrix<ScalarType> const & m1, dense_matrix<ScalarType> const & m2)
+{
+ ScalarType df = 0.0;
+ ScalarType d1 = 0;
+ ScalarType d2 = 0;
+
+ for(std::size_t i = 0; i < m1.size1(); i++)
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ {
+ df += (m1(i,j) - m2(i,j)) * (m1(i,j) - m2(i,j));
+ d1 += m1(i,j) * m1(i,j);
+ d2 += m2(i,j) * m2(i,j);
+ }
+
+ if ( (d1 == 0) && (d2 == 0) )
+ return 0;
+
+ return sqrt(df / fmax(d1, d2));
+}
+
+
+template <typename ScalarType>
+ScalarType diff(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref)
+{
+ ScalarType df = 0.0;
+ ScalarType norm_ref = 0;
+
+ for(std::size_t i = 0; i < vec.size(); i++)
+ {
+ df = df + pow(vec[i] - ref[i], 2);
+ norm_ref += ref[i] * ref[i];
+ }
+
+ return sqrt(df / norm_ref) ;
+}
+
+template <typename ScalarType>
+ScalarType diff_max(std::vector<ScalarType>& vec, std::vector<ScalarType>& ref)
+{
+ ScalarType df = 0.0;
+ ScalarType mx = 0.0;
+ ScalarType norm_max = 0;
+
+ for (std::size_t i = 0; i < vec.size(); i++)
+ {
+ df = fmax(fabs(vec[i] - ref[i]), df);
+ mx = fmax(fabs(vec[i]), mx);
+
+ if (mx > 0)
+ {
+ if (norm_max < df / mx)
+ norm_max = df / mx;
+ }
+ }
+
+ return norm_max;
+}
+
+
+template <typename ScalarType>
+void transpose_test()
+{
+ int w = 5, h = 7;
+ std::vector<ScalarType> s_normal(2 * w * h);
+ viennacl::matrix<ScalarType> normal(w, 2 * h);
+ viennacl::matrix<ScalarType> transp(h, 2 * w);
+
+ for(unsigned int i = 0; i < s_normal.size(); i+=2) {
+ s_normal[i] = i;
+ s_normal[i+1] = i;
+ }
+ viennacl::fast_copy(&s_normal[0], &s_normal[0] + s_normal.size(), normal);
+ std::cout << normal << std::endl;
+ viennacl::detail::fft::transpose(normal);
+ std::cout << normal << std::endl;
+}
+
+
+
+template <typename ScalarType>
+int toeplitz_test(ScalarType epsilon)
+{
+ std::size_t TOEPLITZ_SIZE = 47;
+ viennacl::toeplitz_matrix<ScalarType> vcl_toeplitz1(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+ viennacl::toeplitz_matrix<ScalarType> vcl_toeplitz2(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+
+ viennacl::vector<ScalarType> vcl_input(TOEPLITZ_SIZE);
+ viennacl::vector<ScalarType> vcl_result(TOEPLITZ_SIZE);
+
+ std::vector<ScalarType> input_ref(TOEPLITZ_SIZE);
+ std::vector<ScalarType> result_ref(TOEPLITZ_SIZE);
+
+ dense_matrix<ScalarType> m1(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+ dense_matrix<ScalarType> m2(TOEPLITZ_SIZE, TOEPLITZ_SIZE);
+
+ for(std::size_t i = 0; i < TOEPLITZ_SIZE; i++)
+ for(std::size_t j = 0; j < TOEPLITZ_SIZE; j++)
+ {
+ m1(i,j) = static_cast<ScalarType>(i) - static_cast<ScalarType>(j);
+ m2(i,j) = m1(i,j) * m1(i,j) + 1;
+ }
+
+ for(std::size_t i = 0; i < TOEPLITZ_SIZE; i++)
+ input_ref[i] = ScalarType(i);
+
+ // Copy to ViennaCL
+ viennacl::copy(m1, vcl_toeplitz1);
+ viennacl::copy(m2, vcl_toeplitz2);
+ viennacl::copy(input_ref, vcl_input);
+
+ //
+ // Matrix-Vector product:
+ //
+ vcl_result = viennacl::linalg::prod(vcl_toeplitz1, vcl_input);
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ {
+ ScalarType entry = 0;
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ entry += m1(i,j) * input_ref[j];
+
+ result_ref[i] = entry;
+ }
+
+ viennacl::copy(vcl_result, input_ref);
+ std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+ if (diff_max(input_ref, result_ref) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ for (std::size_t i=0; i<input_ref.size(); ++i)
+ std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+
+ //
+ // Matrix addition:
+ //
+ vcl_toeplitz1 += vcl_toeplitz2;
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ m1(i,j) += m2(i,j);
+
+ viennacl::copy(vcl_toeplitz1, m2);
+ std::cout << "Matrix Addition: " << diff(m1, m2);
+ if (diff(m1, m2) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ //
+ // Per-Element access:
+ //
+ vcl_toeplitz1(2,4) = 42;
+
+ for (std::size_t i=0; i<m1.size1(); ++i) //reference calculation
+ {
+ if (i + 2 < m1.size2())
+ m1(i, i+2) = 42;
+ }
+
+ viennacl::copy(vcl_toeplitz1, m2);
+ std::cout << "Element manipulation: " << diff(m1, m2);
+ if (diff(m1, m2) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+template <typename ScalarType>
+int circulant_test(ScalarType epsilon)
+{
+ std::size_t CIRCULANT_SIZE = 53;
+ viennacl::circulant_matrix<ScalarType> vcl_circulant1(CIRCULANT_SIZE, CIRCULANT_SIZE);
+ viennacl::circulant_matrix<ScalarType> vcl_circulant2(CIRCULANT_SIZE, CIRCULANT_SIZE);
+
+ viennacl::vector<ScalarType> vcl_input(CIRCULANT_SIZE);
+ viennacl::vector<ScalarType> vcl_result(CIRCULANT_SIZE);
+
+ std::vector<ScalarType> input_ref(CIRCULANT_SIZE);
+ std::vector<ScalarType> result_ref(CIRCULANT_SIZE);
+
+ dense_matrix<ScalarType> m1(vcl_circulant1.size1(), vcl_circulant1.size2());
+ dense_matrix<ScalarType> m2(vcl_circulant1.size1(), vcl_circulant1.size2());
+
+ for(std::size_t i = 0; i < m1.size1(); i++)
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ {
+ m1(i,j) = static_cast<ScalarType>((i - j + m1.size1()) % m1.size1());
+ m2(i,j) = m1(i,j) * m1(i,j) + ScalarType(1);
+ }
+
+ for(std::size_t i = 0; i < input_ref.size(); i++)
+ input_ref[i] = ScalarType(i);
+
+ // Copy to ViennaCL
+ viennacl::copy(m1, vcl_circulant1);
+ viennacl::copy(m2, vcl_circulant2);
+ viennacl::copy(input_ref, vcl_input);
+
+ //
+ // Matrix-Vector product:
+ //
+ vcl_result = viennacl::linalg::prod(vcl_circulant1, vcl_input);
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ {
+ ScalarType entry = 0;
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ entry += m1(i,j) * input_ref[j];
+
+ result_ref[i] = entry;
+ }
+
+ viennacl::copy(vcl_result, input_ref);
+ std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+ if (diff_max(input_ref, result_ref) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ for (std::size_t i=0; i<input_ref.size(); ++i)
+ std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+
+ //
+ // Matrix addition:
+ //
+ vcl_circulant1 += vcl_circulant2;
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ m1(i,j) += m2(i,j);
+
+ viennacl::copy(vcl_circulant1, m2);
+ std::cout << "Matrix Addition: " << diff(m1, m2);
+ if (diff(m1, m2) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ //
+ // Per-Element access:
+ //
+ vcl_circulant1(4,2) = 42;
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ {
+ if ((i - j + m1.size1()) % m1.size1() == 2)
+ m1(i, j) = 42;
+ }
+
+ viennacl::copy(vcl_circulant1, m2);
+ std::cout << "Element manipulation: " << diff(m1, m2);
+ if (diff(m1, m2) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+template <typename ScalarType>
+int vandermonde_test(ScalarType epsilon)
+{
+ std::size_t VANDERMONDE_SIZE = 61;
+
+ viennacl::vandermonde_matrix<ScalarType> vcl_vandermonde1(VANDERMONDE_SIZE, VANDERMONDE_SIZE);
+ viennacl::vandermonde_matrix<ScalarType> vcl_vandermonde2(VANDERMONDE_SIZE, VANDERMONDE_SIZE);
+
+ viennacl::vector<ScalarType> vcl_input(VANDERMONDE_SIZE);
+ viennacl::vector<ScalarType> vcl_result(VANDERMONDE_SIZE);
+
+ std::vector<ScalarType> input_ref(VANDERMONDE_SIZE);
+ std::vector<ScalarType> result_ref(VANDERMONDE_SIZE);
+
+ dense_matrix<ScalarType> m1(vcl_vandermonde1.size1(), vcl_vandermonde1.size2());
+ dense_matrix<ScalarType> m2(m1.size1(), m1.size2());
+
+ for(std::size_t i = 0; i < m1.size1(); i++)
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ {
+ m1(i,j) = pow(ScalarType(1.0 + i/1000.0), ScalarType(j));
+ m2(i,j) = pow(ScalarType(1.0 - i/2000.0), ScalarType(j));
+ }
+
+ for(std::size_t i = 0; i < input_ref.size(); i++)
+ input_ref[i] = ScalarType(i);
+
+ // Copy to ViennaCL
+ viennacl::copy(m1, vcl_vandermonde1);
+ viennacl::copy(m2, vcl_vandermonde2);
+ viennacl::copy(input_ref, vcl_input);
+
+ //
+ // Matrix-Vector product:
+ //
+ vcl_result = viennacl::linalg::prod(vcl_vandermonde1, vcl_input);
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ {
+ ScalarType entry = 0;
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ entry += m1(i,j) * input_ref[j];
+
+ result_ref[i] = entry;
+ }
+
+ viennacl::copy(vcl_result, input_ref);
+ std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+ if (diff_max(input_ref, result_ref) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ for (std::size_t i=0; i<input_ref.size(); ++i)
+ std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+
+ //
+ // Note: Matrix addition does not make sense for a Vandermonde matrix
+ //
+
+
+ //
+ // Per-Element access:
+ //
+ vcl_vandermonde1(4) = 1.0001;
+
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ {
+ m1(4, j) = pow(ScalarType(1.0001), ScalarType(j));
+ }
+
+ viennacl::copy(vcl_vandermonde1, m2);
+ std::cout << "Element manipulation: " << diff(m1, m2);
+ if (diff(m1, m2) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+template <typename ScalarType>
+int hankel_test(ScalarType epsilon)
+{
+ std::size_t HANKEL_SIZE = 7;
+ viennacl::hankel_matrix<ScalarType> vcl_hankel1(HANKEL_SIZE, HANKEL_SIZE);
+ viennacl::hankel_matrix<ScalarType> vcl_hankel2(HANKEL_SIZE, HANKEL_SIZE);
+
+ viennacl::vector<ScalarType> vcl_input(HANKEL_SIZE);
+ viennacl::vector<ScalarType> vcl_result(HANKEL_SIZE);
+
+ std::vector<ScalarType> input_ref(HANKEL_SIZE);
+ std::vector<ScalarType> result_ref(HANKEL_SIZE);
+
+ dense_matrix<ScalarType> m1(vcl_hankel1.size1(), vcl_hankel1.size2());
+ dense_matrix<ScalarType> m2(m1.size1(), m1.size2());
+
+ for(std::size_t i = 0; i < m1.size1(); i++)
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ {
+ m1(i,j) = static_cast<ScalarType>((i + j) % (2 * m1.size1()));
+ m2(i,j) = m1(i,j) * m1(i,j) + ScalarType(1);
+ }
+
+ for(std::size_t i = 0; i < input_ref.size(); i++)
+ input_ref[i] = ScalarType(i);
+
+ // Copy to ViennaCL
+ viennacl::copy(m1, vcl_hankel1);
+ viennacl::copy(m2, vcl_hankel2);
+ viennacl::copy(input_ref, vcl_input);
+
+ //
+ // Matrix-Vector product:
+ //
+ vcl_result = viennacl::linalg::prod(vcl_hankel1, vcl_input);
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ {
+ ScalarType entry = 0;
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ entry += m1(i,j) * input_ref[j];
+
+ result_ref[i] = entry;
+ }
+
+ viennacl::copy(vcl_result, input_ref);
+ std::cout << "Matrix-Vector Product: " << diff_max(input_ref, result_ref);
+ if (diff_max(input_ref, result_ref) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ for (std::size_t i=0; i<input_ref.size(); ++i)
+ std::cout << "Should: " << result_ref[i] << ", is: " << input_ref[i] << std::endl;
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+
+ //
+ // Matrix addition:
+ //
+ vcl_hankel1 += vcl_hankel2;
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ m1(i,j) += m2(i,j);
+
+ viennacl::copy(vcl_hankel1, m2);
+ std::cout << "Matrix Addition: " << diff(m1, m2);
+ if (diff(m1, m2) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ //
+ // Per-Element access:
+ //
+ vcl_hankel1(4,2) = 42;
+
+ for(std::size_t i = 0; i < m1.size1(); i++) //reference calculation
+ for(std::size_t j = 0; j < m1.size2(); j++)
+ {
+ if ((i + j) % (2*m1.size1()) == 6)
+ m1(i, j) = 42;
+ }
+
+ viennacl::copy(vcl_hankel1, m2);
+ std::cout << "Element manipulation: " << diff(m1, m2);
+ if (diff(m1, m2) < epsilon)
+ std::cout << " [OK]" << std::endl;
+ else
+ {
+ std::cout << " [FAILED]" << std::endl;
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+int main()
+{
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "## Test :: Structured Matrices" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << std::endl;
+
+ double eps = 1e-3;
+
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << eps << std::endl;
+ std::cout << " numeric: float" << std::endl;
+ std::cout << std::endl;
+ std::cout << " -- Vandermonde matrix -- " << std::endl;
+ if (vandermonde_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ std::cout << " -- Circulant matrix -- " << std::endl;
+ if (circulant_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ std::cout << " -- Toeplitz matrix -- " << std::endl;
+ if (toeplitz_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ std::cout << " -- Hankel matrix -- " << std::endl;
+ if (hankel_test<float>(static_cast<float>(eps)) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+
+ std::cout << std::endl;
+
+ if( viennacl::ocl::current_device().double_support() )
+ {
+ eps = 1e-10;
+
+ std::cout << std::endl;
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << eps << std::endl;
+ std::cout << " numeric: double" << std::endl;
+ std::cout << std::endl;
+
+ std::cout << " -- Vandermonde matrix -- " << std::endl;
+ if (vandermonde_test<double>(eps) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ std::cout << " -- Circulant matrix -- " << std::endl;
+ if (circulant_test<double>(eps) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ std::cout << " -- Toeplitz matrix -- " << std::endl;
+ if (toeplitz_test<double>(eps) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+
+ std::cout << " -- Hankel matrix -- " << std::endl;
+ if (hankel_test<double>(eps) == EXIT_FAILURE)
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
diff --git a/tests/src/vector.cpp b/tests/src/vector.cpp
index 78ef3af..091f361 100644
--- a/tests/src/vector.cpp
+++ b/tests/src/vector.cpp
@@ -1,16 +1,18 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
//
// *** System
@@ -50,8 +52,8 @@ bool readVectorFromFile(const std::string & filename, boost::numeric::ublas::vec
unsigned int size;
file >> size;
- if (size > 20000) //keep execution times short
- size = 20000;
+ if (size > 30000) //keep execution times short
+ size = 30000;
vec.resize(size);
for (unsigned int i = 0; i < size; ++i)
@@ -257,7 +259,11 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
std::cout << " diff: " << fabs(diff(val, vcl_rhs(0))) << std::endl;
retval = EXIT_FAILURE;
}
- // --------------------------------------------------------------------------
+
+
+ //
+ // multiplication and division of vectors by scalars
+ //
copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
rhs2 = rhs;
@@ -311,25 +317,118 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
retval = EXIT_FAILURE;
}
- // --------------------------------------------------------------------------
- rhs2 = rhs;
+
+
+
+ //
+ // add and inplace_add of vectors
+ //
+ std::cout << "Testing add on vector..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs = rhs + rhs2;
+ vcl_rhs = vcl_rhs + vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: add on vector" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+ std::cout << "Testing inplace-add on vector..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs += rhs2;
+ vcl_rhs += vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: inplace-add on vector" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+ //
+ // subtract and inplace_subtract of vectors
+ //
+ std::cout << "Testing sub on vector..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs = rhs - rhs2;
+ vcl_rhs = vcl_rhs - vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: sub on vector" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+ std::cout << "Testing inplace-sub on vector..." << std::endl;
+ rhs2 = 42.0 * rhs;
copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+ rhs += rhs2;
+ vcl_rhs += vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: inplace-sub on vector" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+
+
+ //
+ // multiply-add and multiply-subtract
+ //
std::cout << "Testing multiply-add on vector with CPU scalar..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs = rhs + alpha * rhs2;
+ vcl_rhs = vcl_rhs + alpha * vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: multiply add with CPU scalar" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+
+ std::cout << "Testing inplace multiply-add on vector with CPU scalar..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
rhs += alpha * rhs2;
vcl_rhs += alpha * vcl_rhs2;
if( fabs(diff(rhs, vcl_rhs)) > epsilon )
{
- std::cout << "# Error at operation: multiply add with CPU scalar" << std::endl;
+ std::cout << "# Error at operation: inplace multiply add with CPU scalar" << std::endl;
std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
retval = EXIT_FAILURE;
}
-
+
std::cout << "Testing multiply-add on vector with GPU scalar..." << std::endl;
- copy(rhs2.begin(), rhs2.end(), vcl_rhs.begin());
- vcl_rhs += gpu_alpha * vcl_rhs2;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs = rhs + alpha * rhs2;
+ vcl_rhs = vcl_rhs + gpu_alpha * vcl_rhs2;
if( fabs(diff(rhs, vcl_rhs)) > epsilon )
{
@@ -338,40 +437,99 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
retval = EXIT_FAILURE;
}
- // --------------------------------------------------------------------------
+ std::cout << "Testing inplace multiply-add on vector with GPU scalar..." << std::endl;
+ rhs2 = 42.0 * rhs;
copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
- rhs2 = rhs;
-
- std::cout << "Testing multiply-sub on vector with CPU scalar..." << std::endl;
- rhs -= alpha * rhs;
- vcl_rhs -= alpha * vcl_rhs;
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs += alpha * rhs2;
+ vcl_rhs += gpu_alpha * vcl_rhs2;
- if( fabs(diff(cpu_result, gpu_result)) > epsilon )
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
{
- std::cout << "# Error at operation: multiply sub with CPU scalar" << std::endl;
+ std::cout << "# Error at operation: inplace multiply add with GPU scalar" << std::endl;
std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
retval = EXIT_FAILURE;
}
- std::cout << "Testing multiply-sub on vector with GPU scalar..." << std::endl;
- copy(rhs2.begin(), rhs2.end(), vcl_rhs.begin());
- vcl_rhs -= gpu_alpha * vcl_rhs;
+
+
+ //
+ // multiply-subtract
+ //
+ std::cout << "Testing multiply-subtract on vector with CPU scalar..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs = rhs - alpha * rhs2;
+ vcl_rhs = vcl_rhs - alpha * vcl_rhs2;
if( fabs(diff(rhs, vcl_rhs)) > epsilon )
{
- std::cout << "# Error at operation: multiply sub with GPU scalar" << std::endl;
+ std::cout << "# Error at operation: multiply-subtract with CPU scalar" << std::endl;
std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
retval = EXIT_FAILURE;
}
+
+
+ std::cout << "Testing inplace multiply-subtract on vector with CPU scalar..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs -= alpha * rhs2;
+ vcl_rhs -= alpha * vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: inplace multiply subtract with CPU scalar" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+ std::cout << "Testing multiply-subtract on vector with GPU scalar..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
- // --------------------------------------------------------------------------
+ rhs = rhs - alpha * rhs2;
+ vcl_rhs = vcl_rhs - gpu_alpha * vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: multiply subtract with GPU scalar" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+ std::cout << "Testing inplace multiply-subtract on vector with GPU scalar..." << std::endl;
+ rhs2 = 42.0 * rhs;
+ copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
+ copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
+
+ rhs -= alpha * rhs2;
+ vcl_rhs -= gpu_alpha * vcl_rhs2;
+
+ if( fabs(diff(rhs, vcl_rhs)) > epsilon )
+ {
+ std::cout << "# Error at operation: inplace multiply subtract with GPU scalar" << std::endl;
+ std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
+ retval = EXIT_FAILURE;
+ }
+
+
+
+ //
+ // Misc stuff
+ //
rhs2 = rhs;
copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
std::cout << "Testing several vector additions..." << std::endl;
- rhs = rhs2 + rhs2 + rhs;
- vcl_rhs = vcl_rhs2 + vcl_rhs2 + vcl_rhs;
+ rhs = rhs2 + rhs + rhs2;
+ vcl_rhs = vcl_rhs2 + vcl_rhs + vcl_rhs2;
if( fabs(diff(rhs, vcl_rhs)) > epsilon )
{
@@ -379,7 +537,12 @@ int test(Epsilon const& epsilon, std::string rhsfile, std::string resultfile)
std::cout << " diff: " << fabs(diff(rhs, vcl_rhs)) << std::endl;
retval = EXIT_FAILURE;
}
- // --------------------------------------------------------------------------
+
+
+
+ //
+ // Complicated expressions (for ensuring the operator overloads work correctly)
+ //
copy(vcl_rhs.begin(), vcl_rhs.end(), rhs2.begin());
copy(rhs.begin(), rhs.end(), vcl_rhs.begin());
copy(rhs2.begin(), rhs2.end(), vcl_rhs2.begin());
diff --git a/tests/src/vector_range.cpp b/tests/src/vector_range.cpp
new file mode 100644
index 0000000..80c4eea
--- /dev/null
+++ b/tests/src/vector_range.cpp
@@ -0,0 +1,255 @@
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#define VIENNACL_HAVE_UBLAS
+//#define NDEBUG
+//#define VIENNACL_BUILD_INFO
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <cmath>
+#include <algorithm>
+#include <stdio.h>
+#include <sys/time.h>
+#include <time.h>
+//#include "../benchmarks/benchmark-utils.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+/*#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/linalg/norm_2.hpp"
+#include "viennacl/io/matrix_market.hpp"*/
+#include "viennacl/vector_proxy.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+
+
+template <typename VectorType, typename VCLVectorType>
+bool check_for_equality(VectorType const & ublas_v, VCLVectorType const & vcl_v)
+{
+ typedef typename VectorType::value_type value_type;
+
+ std::vector<value_type> vcl_v_cpu(vcl_v.size());
+ viennacl::copy(vcl_v, vcl_v_cpu);
+
+ for (size_t i=0; i<ublas_v.size(); ++i)
+ {
+ if (ublas_v[i] != vcl_v_cpu[i])
+ {
+ std::cout << "Error at index (" << i << "): " << ublas_v[i] << " vs " << vcl_v_cpu[i] << std::endl;
+ }
+ }
+ return true;
+}
+
+
+
+template <typename T>
+int run_test()
+{
+ typedef float ScalarType;
+ typedef boost::numeric::ublas::vector<ScalarType> VectorType;
+
+ typedef viennacl::vector<ScalarType> VCLVectorType;
+
+ std::size_t dim_large = 70;
+ std::size_t dim_small = 27;
+
+ //setup ublas objects:
+ VectorType ublas_v1(dim_large);
+ for (std::size_t i=0; i<ublas_v1.size(); ++i)
+ ublas_v1(i) = i+1;
+
+ VectorType ublas_v2(dim_small);
+ for (std::size_t i=0; i<ublas_v2.size(); ++i)
+ ublas_v2(i) = dim_large + i;
+
+ boost::numeric::ublas::range ublas_r1(0, dim_small);
+ boost::numeric::ublas::range ublas_r2(dim_small - 1, 2*dim_small - 1);
+ boost::numeric::ublas::range ublas_r3(dim_large - dim_small, dim_large);
+ boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub1(ublas_v1, ublas_r1);
+ boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub2(ublas_v1, ublas_r2);
+ boost::numeric::ublas::vector_range<VectorType> ublas_v1_sub3(ublas_v1, ublas_r3);
+
+ //Setup ViennaCL objects
+ VCLVectorType vcl_v1(dim_large);
+ viennacl::copy(ublas_v1, vcl_v1);
+ VCLVectorType vcl_v2(dim_small);
+ viennacl::copy(ublas_v2, vcl_v2);
+
+ viennacl::range vcl_r1(0, dim_small);
+ viennacl::range vcl_r2(dim_small - 1, 2*dim_small - 1);
+ viennacl::range vcl_r3(dim_large - dim_small, dim_large);
+ viennacl::vector_range<VCLVectorType> vcl_v1_sub1(vcl_v1, vcl_r1);
+ viennacl::vector_range<VCLVectorType> vcl_v1_sub2(vcl_v1, vcl_r2);
+ viennacl::vector_range<VCLVectorType> vcl_v1_sub3(vcl_v1, vcl_r3);
+
+ std::cout << std::endl;
+ std::cout << "//" << std::endl;
+ std::cout << "////////// Test 1: Copy to GPU //////////" << std::endl;
+ std::cout << "//" << std::endl;
+
+ ublas_v1_sub1 = ublas_v2;
+ viennacl::copy(ublas_v2, vcl_v1_sub1);
+ std::cout << "Testing copy to begin of v1... ";
+ if (check_for_equality(ublas_v1, vcl_v1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ ublas_v1_sub2 = ublas_v2;
+ viennacl::copy(ublas_v2, vcl_v1_sub2);
+ std::cout << "Testing copy to middle of v1... ";
+ if (check_for_equality(ublas_v1, vcl_v1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+
+ ublas_v1_sub3 = ublas_v2;
+ viennacl::copy(ublas_v2, vcl_v1_sub3);
+ std::cout << "Testing copy to bottom of v1... ";
+ if (check_for_equality(ublas_v1, vcl_v1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ std::cout << std::endl;
+ std::cout << "//" << std::endl;
+ std::cout << "////////// Test 2: Copy from GPU //////////" << std::endl;
+ std::cout << "//" << std::endl;
+
+ std::cout << "Testing beginning of v1... ";
+ if (check_for_equality(ublas_v1_sub1, vcl_v1_sub1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "Testing middle of v1... ";
+ if (check_for_equality(ublas_v1_sub2, vcl_v1_sub2))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "Testing bottom of v1... ";
+ if (check_for_equality(ublas_v1_sub3, vcl_v1_sub3))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ std::cout << "//" << std::endl;
+ std::cout << "////////// Test 3: Inplace add //////////" << std::endl;
+ std::cout << "//" << std::endl;
+ viennacl::copy(ublas_v1_sub1, vcl_v1_sub1);
+
+ std::cout << "Testing inplace add at beginning of v1: ";
+ ublas_v1_sub1 += ublas_v1_sub1;
+ vcl_v1_sub1 += vcl_v1_sub1;
+
+ if (check_for_equality(ublas_v1, vcl_v1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ std::cout << "Testing inplace add at middle of v1: ";
+ ublas_v1_sub2 += ublas_v1_sub2;
+ vcl_v1_sub2 += vcl_v1_sub2;
+
+ if (check_for_equality(ublas_v1, vcl_v1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+
+ std::cout << "Testing inplace add at end of v1: ";
+ ublas_v1_sub3 += ublas_v1_sub3;
+ vcl_v1_sub3 += vcl_v1_sub3;
+
+ if (check_for_equality(ublas_v1, vcl_v1))
+ std::cout << "PASSED!" << std::endl;
+ else
+ {
+ std::cout << std::endl << "TEST failed!";
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+int main (int argc, const char * argv[])
+{
+ std::cout << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "## Test :: Vector Range" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << "----------------------------------------------" << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << 0 << std::endl;
+ std::cout << " numeric: float" << std::endl;
+ if (run_test<float>() != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+
+ if( viennacl::ocl::current_device().double_support() )
+ {
+ std::cout << "# Testing setup:" << std::endl;
+ std::cout << " eps: " << 0 << std::endl;
+ std::cout << " numeric: double" << std::endl;
+
+ if (run_test<double>() != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
diff --git a/viennacl/circulant_matrix.hpp b/viennacl/circulant_matrix.hpp
new file mode 100644
index 0000000..9033170
--- /dev/null
+++ b/viennacl/circulant_matrix.hpp
@@ -0,0 +1,258 @@
+#ifndef _VIENNACL_CIRCULANT_MATRIX_HPP
+#define _VIENNACL_CIRCULANT_MATRIX_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file circulant_matrix.hpp
+ @brief Implementation of the circulant_matrix class for efficient manipulation of circulant matrices. Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/linalg/circulant_matrix_operations.hpp"
+
+#include "viennacl/fft.hpp"
+
+namespace viennacl
+{
+ /** @brief A Circulant matrix class
+ *
+ * @tparam SCALARTYPE The underlying scalar type (either float or double)
+ * @tparam ALIGNMENT The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ class circulant_matrix
+ {
+ public:
+ /**
+ * @brief The default constructor. Does not allocate any memory.
+ *
+ */
+ explicit circulant_matrix()
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+ /**
+ * @brief Creates the matrix with the given size
+ *
+ * @param rows Number of rows of the matrix
+ * @param cols Number of columns of the matrix
+ */
+ explicit circulant_matrix(std::size_t rows, std::size_t cols) : elements_(rows)
+ {
+ assert(rows == cols && "Circulant matrix must be square!");
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+ /** @brief Resizes the matrix.
+ * Existing entries can be preserved
+ *
+ * @param sz New size of matrix
+ * @param preserve If true, existing values are preserved.
+ */
+ void resize(size_t sz, bool preserve = true)
+ {
+ elements_.resize(sz, preserve);
+ }
+
+ /** @brief Returns the OpenCL handle
+ *
+ * @return OpenCL handle
+ */
+ viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+ /**
+ * @brief Returns an internal viennacl::vector, which represents a circulant matrix elements
+ *
+ */
+ viennacl::vector<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+ viennacl::vector<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+ /**
+ * @brief Returns the number of rows of the matrix
+ */
+ std::size_t size1() const { return elements_.size(); }
+
+ /**
+ * @brief Returns the number of columns of the matrix
+ */
+ std::size_t size2() const { return elements_.size(); }
+
+ /** @brief Returns the internal size of matrix representtion.
+ * Usually required for launching OpenCL kernels only
+ *
+ * @return Internal size of matrix representation
+ */
+ std::size_t internal_size() const { return elements_.internal_size(); }
+
+ /**
+ * @brief Read-write access to a single element of the matrix
+ *
+ * @param row_index Row index of accessed element
+ * @param col_index Column index of accessed element
+ * @return Proxy for matrix entry
+ */
+ entry_proxy<SCALARTYPE> operator()(std::size_t row_index, std::size_t col_index)
+ {
+ int index = static_cast<int>(row_index) - static_cast<int>(col_index);
+
+ assert(row_index < size1() && col_index < size2() && "Invalid access");
+
+ while (index < 0)
+ index += size1();
+ return elements_[index];
+ }
+
+ /**
+ * @brief += operation for circulant matrices
+ *
+ * @param that Matrix which will be added
+ * @return Result of addition
+ */
+ circulant_matrix<SCALARTYPE, ALIGNMENT>& operator +=(circulant_matrix<SCALARTYPE, ALIGNMENT>& that)
+ {
+ elements_ += that.elements();
+ return *this;
+ }
+
+ private:
+ circulant_matrix(circulant_matrix const & t) {}
+ circulant_matrix & operator=(circulant_matrix const & t) {}
+
+ viennacl::vector<SCALARTYPE, ALIGNMENT> elements_;
+ };
+
+ /** @brief Copies a circulant matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param cpu_vec A std::vector on the host.
+ * @param gpu_mat A circulant_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(std::vector<SCALARTYPE>& cpu_vec, circulant_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat)
+ {
+ assert(cpu_vec.size() == gpu_mat.size1() && "Size mismatch");
+ copy(cpu_vec, gpu_mat.elements());
+ }
+
+ /** @brief Copies a circulant matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+ *
+ *
+ * @param gpu_mat A circulant_matrix from ViennaCL
+ * @param cpu_vec A std::vector on the host.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(circulant_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat, std::vector<SCALARTYPE>& cpu_vec)
+ {
+ assert(cpu_vec.size() == gpu_mat.size1() && "Size mismatch");
+ copy(gpu_mat.elements(), cpu_vec);
+ }
+
+ /** @brief Copies a circulant matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+ *
+ *
+ * @param circ_src A circulant_matrix from ViennaCL
+ * @param com_dst A matrix-like object
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(circulant_matrix<SCALARTYPE, ALIGNMENT>& circ_src, MATRIXTYPE& com_dst) {
+ std::size_t size = circ_src.size1();
+ assert(size == com_dst.size1() && "Size mismatch");
+ assert(size == com_dst.size2() && "Size mismatch");
+ std::vector<SCALARTYPE> tmp(size);
+ copy(circ_src, tmp);
+
+ for (std::size_t i = 0; i < size; i++) {
+ for (std::size_t j = 0; j < size; j++) {
+ int index = static_cast<int>(i) - static_cast<int>(j);
+ if (index < 0)
+ index = size + index;
+ com_dst(i, j) = tmp[index];
+ }
+ }
+ }
+
+ /** @brief Copies a the matrix-like object to the circulant matrix from the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param com_src A std::vector on the host
+ * @param circ_dst A circulant_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(MATRIXTYPE& com_src, circulant_matrix<SCALARTYPE, ALIGNMENT>& circ_dst) {
+ std::size_t size = circ_dst.size1();
+ assert(size == com_src.size1() && "Size mismatch");
+ assert(size == com_src.size2() && "Size mismatch");
+
+ std::vector<SCALARTYPE> tmp(size);
+
+ for(std::size_t i = 0; i < size; i++) tmp[i] = com_src(i, 0);
+
+ copy(tmp, circ_dst);
+ }
+
+ /*namespace linalg
+ {
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(circulant_matrix<SCALARTYPE, ALIGNMENT> const & mat,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT> const & vec,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT>& result) {
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> circ(mat.elements().size() * 2);
+ fft::real_to_complex(mat.elements(), circ, mat.elements().size());
+
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 2);
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 2);
+
+ fft::real_to_complex(vec, tmp, vec.size());
+ fft::convolve(circ, tmp, tmp2);
+ fft::complex_to_real(tmp2, result, vec.size());
+ }
+ }*/
+
+ /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
+ *
+ * @param s STL output stream
+ * @param gpu_matrix A ViennaCL circulant matrix
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ std::ostream & operator<<(std::ostream& s, circulant_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+ {
+ std::size_t size = gpu_matrix.size1();
+ std::vector<SCALARTYPE> tmp(size);
+ copy(gpu_matrix, tmp);
+ s << "[" << size << "," << size << "](";
+
+ for(std::size_t i = 0; i < size; i++) {
+ s << "(";
+ for(std::size_t j = 0; j < size; j++) {
+ int index = (int)i - (int)j;
+ if(index < 0) index = size + index;
+ s << tmp[index];
+ //s << index;
+ if(j < (size - 1)) s << ",";
+ }
+ s << ")";
+ }
+ s << ")";
+ return s;
+ }
+}
+
+#endif // _VIENNACL_CIRCULANT_MATRIX_HPP
diff --git a/viennacl/compressed_matrix.hpp b/viennacl/compressed_matrix.hpp
index 91219f6..d74b0a3 100644
--- a/viennacl/compressed_matrix.hpp
+++ b/viennacl/compressed_matrix.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_COMPRESSED_MATRIX_HPP_
+#define VIENNACL_COMPRESSED_MATRIX_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_COMPRESSED_MATRIX_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file compressed_matrix.hpp
@brief Implementation of the compressed_matrix class
@@ -63,14 +65,14 @@ namespace viennacl
row_it != cpu_matrix.end1();
++row_it)
{
- unsigned int entries_per_row = 0;
+ std::size_t entries_per_row = 0;
for (typename CPU_MATRIX::const_iterator2 col_it = row_it.begin();
col_it != row_it.end();
++col_it)
{
++entries_per_row;
}
- num_entries += viennacl::tools::roundUpToNextMultiple<unsigned int>(entries_per_row, ALIGNMENT);
+ num_entries += viennacl::tools::roundUpToNextMultiple<std::size_t>(entries_per_row, ALIGNMENT);
}
if (num_entries == 0) //we copy an empty matrix
@@ -79,12 +81,12 @@ namespace viennacl
}
//set up matrix entries:
- std::vector<unsigned int> row_buffer(cpu_matrix.size1() + 1);
- std::vector<unsigned int> col_buffer(num_entries);
+ std::vector<cl_uint> row_buffer(cpu_matrix.size1() + 1);
+ std::vector<cl_uint> col_buffer(num_entries);
std::vector<SCALARTYPE> elements(num_entries);
- unsigned int row_index = 0;
- unsigned int data_index = 0;
+ std::size_t row_index = 0;
+ std::size_t data_index = 0;
for (typename CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
row_it != cpu_matrix.end1();
@@ -97,15 +99,20 @@ namespace viennacl
col_it != row_it.end();
++col_it)
{
- col_buffer[data_index] = static_cast<unsigned int>(col_it.index2());
+ col_buffer[data_index] = static_cast<std::size_t>(col_it.index2());
elements[data_index] = *col_it;
++data_index;
}
- data_index = viennacl::tools::roundUpToNextMultiple<unsigned int>(data_index, ALIGNMENT); //take care of alignment
+ data_index = viennacl::tools::roundUpToNextMultiple<std::size_t>(data_index, ALIGNMENT); //take care of alignment
}
row_buffer[row_index] = data_index;
- gpu_matrix.set(&row_buffer[0], &col_buffer[0], &elements[0], static_cast<unsigned int>(cpu_matrix.size1()), num_entries);
+ gpu_matrix.set(&row_buffer[0],
+ &col_buffer[0],
+ &elements[0],
+ cpu_matrix.size1(),
+ cpu_matrix.size2(),
+ num_entries);
}
}
@@ -202,24 +209,24 @@ namespace viennacl
cpu_matrix.resize(gpu_matrix.size1(), gpu_matrix.size2(), false);
//get raw data from memory:
- std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
- std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
+ std::vector<cl_uint> row_buffer(gpu_matrix.size1() + 1);
+ std::vector<cl_uint> col_buffer(gpu_matrix.nnz());
std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
//std::cout << "GPU->CPU, nonzeros: " << gpu_matrix.nnz() << std::endl;
cl_int err;
- err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(), CL_TRUE, 0, sizeof(unsigned int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
+ err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(), CL_TRUE, 0, sizeof(cl_uint)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
- err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(), CL_TRUE, 0, sizeof(unsigned int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
+ err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(), CL_TRUE, 0, sizeof(cl_uint)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(), CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
viennacl::ocl::get_queue().finish();
//fill the cpu_matrix:
- unsigned int data_index = 0;
- for (unsigned int row = 1; row <= gpu_matrix.size1(); ++row)
+ std::size_t data_index = 0;
+ for (std::size_t row = 1; row <= gpu_matrix.size1(); ++row)
{
while (data_index < row_buffer[row])
{
@@ -264,16 +271,16 @@ namespace viennacl
&& "Provided Eigen compressed matrix is too small!");
//get raw data from memory:
- std::vector<unsigned int> row_buffer(gpu_matrix.size1() + 1);
- std::vector<unsigned int> col_buffer(gpu_matrix.nnz());
+ std::vector<cl_uint> row_buffer(gpu_matrix.size1() + 1);
+ std::vector<cl_uint> col_buffer(gpu_matrix.nnz());
std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
cl_int err;
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(),
- CL_TRUE, 0, sizeof(unsigned int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
+ CL_TRUE, 0, sizeof(cl_uint)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(),
- CL_TRUE, 0, sizeof(unsigned int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
+ CL_TRUE, 0, sizeof(cl_uint)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(),
CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
@@ -282,8 +289,8 @@ namespace viennacl
eigen_matrix.setZero();
eigen_matrix.startFill();
- unsigned int data_index = 0;
- for (unsigned int row = 1; row <= gpu_matrix.size1(); ++row)
+ std::size_t data_index = 0;
+ for (std::size_t row = 1; row <= gpu_matrix.size1(); ++row)
{
while (data_index < row_buffer[row])
{
@@ -318,10 +325,10 @@ namespace viennacl
cl_int err;
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle1(),
- CL_TRUE, 0, sizeof(unsigned int)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
+ CL_TRUE, 0, sizeof(cl_uint)*(gpu_matrix.size1() + 1), &(row_buffer[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle2(),
- CL_TRUE, 0, sizeof(unsigned int)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
+ CL_TRUE, 0, sizeof(cl_uint)*gpu_matrix.nnz(), &(col_buffer[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(),
CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
@@ -332,8 +339,8 @@ namespace viennacl
//mtl4_matrix.change_dim(gpu_matrix.size1(), gpu_matrix.size2());
mtl::matrix::inserter< mtl::compressed2D<SCALARTYPE> > ins(mtl4_matrix);
- unsigned int data_index = 0;
- for (unsigned int row = 1; row <= gpu_matrix.size1(); ++row)
+ std::size_t data_index = 0;
+ for (std::size_t row = 1; row <= gpu_matrix.size1(); ++row)
{
while (data_index < row_buffer[row])
{
@@ -372,21 +379,22 @@ namespace viennacl
* @param cols Number of columns
* @param nonzeros Optional number of nonzeros for memory preallocation
*/
- explicit compressed_matrix(unsigned int rows, unsigned int cols, unsigned int nonzeros = 0) :
+ explicit compressed_matrix(std::size_t rows, std::size_t cols, std::size_t nonzeros = 0) :
_rows(rows), _cols(cols), _nonzeros(nonzeros)
{
viennacl::linalg::kernels::compressed_matrix<SCALARTYPE, ALIGNMENT>::init();
if (rows > 0)
- _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * rows);
+ _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * rows);
if (nonzeros > 0)
{
- _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * nonzeros);
+ _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * nonzeros);
_elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE) * nonzeros);
}
}
- explicit compressed_matrix(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements, unsigned int rows, unsigned int cols, unsigned int nonzeros) :
+ explicit compressed_matrix(cl_mem mem_row_buffer, cl_mem mem_col_buffer, cl_mem mem_elements,
+ std::size_t rows, std::size_t cols, std::size_t nonzeros) :
_rows(rows), _cols(cols), _nonzeros(nonzeros)
{
_row_buffer = mem_row_buffer;
@@ -403,34 +411,40 @@ namespace viennacl
* @param row_jumper Pointer to an array holding the indices of the first element of each row (starting with zero). E.g. row_jumper[10] returns the index of the first entry of the 11th row. The array length is 'cols + 1'
* @param col_buffer Pointer to an array holding the column index of each entry. The array length is 'nonzeros'
* @param elements Pointer to an array holding the entries of the sparse matrix. The array length is 'elements'
- * @param cols Number of columns (and rows) of the sparse matrix
+ * @param rows Number of rows of the sparse matrix
+ * @param cols Number of columns of the sparse matrix
* @param nonzeros Number of nonzeros
*/
- void set(unsigned int * row_jumper, unsigned int * col_buffer, SCALARTYPE * elements, unsigned int cols, unsigned int nonzeros)
+ void set(cl_uint * row_jumper,
+ cl_uint * col_buffer,
+ SCALARTYPE * elements,
+ std::size_t rows,
+ std::size_t cols,
+ std::size_t nonzeros)
{
assert(cols > 0);
assert(nonzeros > 0);
//std::cout << "Setting memory: " << cols + 1 << ", " << nonzeros << std::endl;
- _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * (cols + 1), row_jumper);
- _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * nonzeros, col_buffer);
+ _row_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * (rows + 1), row_jumper);
+ _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * nonzeros, col_buffer);
_elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE) * nonzeros, elements);
_nonzeros = nonzeros;
- _rows = cols;
+ _rows = rows;
_cols = cols;
}
/** @brief Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. */
- void reserve(unsigned int new_nonzeros)
+ void reserve(std::size_t new_nonzeros)
{
if (new_nonzeros > _nonzeros)
{
viennacl::ocl::handle<cl_mem> _col_buffer_old = _col_buffer;
viennacl::ocl::handle<cl_mem> _elements_old = _elements;
- _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(unsigned int) * new_nonzeros);
+ _col_buffer = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint) * new_nonzeros);
_elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE) * new_nonzeros);
cl_int err;
- err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), _col_buffer_old, _col_buffer, 0, 0, sizeof(unsigned int)*_nonzeros, 0, NULL, NULL);
+ err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), _col_buffer_old, _col_buffer, 0, 0, sizeof(cl_uint)*_nonzeros, 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), _elements_old, _elements, 0, 0, sizeof(SCALARTYPE)*_nonzeros, 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
@@ -445,7 +459,7 @@ namespace viennacl
* @param new_size2 New number of columns
* @param preserve If true, the old values are preserved. At present, old values are always discarded.
*/
- void resize(unsigned int new_size1, unsigned int new_size2, bool preserve = true)
+ void resize(std::size_t new_size1, std::size_t new_size2, bool preserve = true)
{
assert(new_size1 > 0 && new_size2 > 0);
//std::cout << "Resizing from (" << _rows << ", " << _cols << ") to (" << new_size1 << ", " << new_size2 << ")" << std::endl;
@@ -488,11 +502,11 @@ namespace viennacl
}
/** @brief Returns the number of rows */
- const unsigned int & size1() const { return _rows; }
+ const std::size_t & size1() const { return _rows; }
/** @brief Returns the number of columns */
- const unsigned int & size2() const { return _cols; }
+ const std::size_t & size2() const { return _cols; }
/** @brief Returns the number of nonzero entries */
- const unsigned int & nnz() const { return _nonzeros; }
+ const std::size_t & nnz() const { return _nonzeros; }
/** @brief Returns the OpenCL handle to the row index array */
const viennacl::ocl::handle<cl_mem> & handle1() const { return _row_buffer; }
@@ -502,16 +516,16 @@ namespace viennacl
const viennacl::ocl::handle<cl_mem> & handle() const { return _elements; }
private:
- /** @brief Copy constructor is by now not available. */
- compressed_matrix(compressed_matrix const &);
+ // /** @brief Copy constructor is by now not available. */
+ //compressed_matrix(compressed_matrix const &);
/** @brief Assignment is by now not available. */
compressed_matrix & operator=(compressed_matrix const &);
- unsigned int _rows;
- unsigned int _cols;
- unsigned int _nonzeros;
+ std::size_t _rows;
+ std::size_t _cols;
+ std::size_t _nonzeros;
viennacl::ocl::handle<cl_mem> _row_buffer;
viennacl::ocl::handle<cl_mem> _col_buffer;
viennacl::ocl::handle<cl_mem> _elements;
diff --git a/viennacl/coordinate_matrix.hpp b/viennacl/coordinate_matrix.hpp
index 2a82a88..14f0b96 100644
--- a/viennacl/coordinate_matrix.hpp
+++ b/viennacl/coordinate_matrix.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_COORDINATE_MATRIX_HPP_
+#define VIENNACL_COORDINATE_MATRIX_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_COORDINATE_MATRIX_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file coordinate_matrix.hpp
@brief Implementation of the coordinate_matrix class
@@ -50,7 +52,7 @@ namespace viennacl
// Step 1: Determine nonzeros:
if ( cpu_matrix.size1() > 0 && cpu_matrix.size2() > 0 )
{
- unsigned int num_entries = 0;
+ std::size_t num_entries = 0;
for (typename CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
row_it != cpu_matrix.end1();
++row_it)
@@ -73,8 +75,8 @@ namespace viennacl
std::vector<cl_uint> group_boundaries(group_num + 1);
std::vector<SCALARTYPE> elements(gpu_matrix.internal_nnz());
- unsigned int data_index = 0;
- unsigned int current_fraction = 0;
+ std::size_t data_index = 0;
+ std::size_t current_fraction = 0;
for (typename CPU_MATRIX::const_iterator1 row_it = cpu_matrix.begin1();
row_it != cpu_matrix.end1();
@@ -84,8 +86,8 @@ namespace viennacl
col_it != row_it.end();
++col_it)
{
- coord_buffer[2*data_index] = static_cast<unsigned int>(col_it.index1());
- coord_buffer[2*data_index + 1] = static_cast<unsigned int>(col_it.index2());
+ coord_buffer[2*data_index] = static_cast<cl_uint>(col_it.index1());
+ coord_buffer[2*data_index + 1] = static_cast<cl_uint>(col_it.index2());
elements[data_index] = *col_it;
++data_index;
}
@@ -139,20 +141,20 @@ namespace viennacl
cpu_matrix.resize(gpu_matrix.size1(), gpu_matrix.size2(), false);
//get raw data from memory:
- std::vector<unsigned int> coord_buffer(2*gpu_matrix.nnz());
+ std::vector<cl_uint> coord_buffer(2*gpu_matrix.nnz());
std::vector<SCALARTYPE> elements(gpu_matrix.nnz());
//std::cout << "GPU nonzeros: " << gpu_matrix.nnz() << std::endl;
cl_int err;
- err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle12(), CL_TRUE, 0, sizeof(unsigned int)* 2 *gpu_matrix.nnz(), &(coord_buffer[0]), 0, NULL, NULL);
+ err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle12(), CL_TRUE, 0, sizeof(cl_uint)* 2 *gpu_matrix.nnz(), &(coord_buffer[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(), CL_TRUE, 0, sizeof(SCALARTYPE)*gpu_matrix.nnz(), &(elements[0]), 0, NULL, NULL);
VIENNACL_ERR_CHECK(err);
viennacl::ocl::get_queue().finish();
//fill the cpu_matrix:
- for (unsigned int index = 0; index < gpu_matrix.nnz(); ++index)
+ for (std::size_t index = 0; index < gpu_matrix.nnz(); ++index)
{
cpu_matrix(coord_buffer[2*index], coord_buffer[2*index+1]) = elements[index];
}
@@ -196,7 +198,7 @@ namespace viennacl
* @param cols Number of columns
* @param nonzeros Optional number of nonzeros for memory preallocation
*/
- coordinate_matrix(unsigned int rows, unsigned int cols, unsigned int nonzeros = 0) :
+ coordinate_matrix(std::size_t rows, std::size_t cols, std::size_t nonzeros = 0) :
rows_(rows), cols_(cols), nonzeros_(nonzeros)
{
viennacl::linalg::kernels::coordinate_matrix<SCALARTYPE, ALIGNMENT>::init();
@@ -209,7 +211,7 @@ namespace viennacl
}
/** @brief Allocate memory for the supplied number of nonzeros in the matrix. Old values are preserved. */
- void reserve(unsigned int new_nonzeros)
+ void reserve(std::size_t new_nonzeros)
{
if (new_nonzeros > nonzeros_)
{
@@ -239,7 +241,7 @@ namespace viennacl
* @param new_size2 New number of columns
* @param preserve If true, the old values are preserved. At present, old values are always discarded.
*/
- void resize(unsigned int new_size1, unsigned int new_size2, bool preserve = true)
+ void resize(std::size_t new_size1, std::size_t new_size2, bool preserve = true)
{
assert (new_size1 > 0 && new_size2 > 0);
@@ -257,7 +259,7 @@ namespace viennacl
std::cout << "Cropping STL matrix of size " << stl_sparse_matrix.size() << std::endl;
if (new_size2 < cols_ && rows_ > 0)
{
- for (size_t i=0; i<stl_sparse_matrix.size(); ++i)
+ for (std::size_t i=0; i<stl_sparse_matrix.size(); ++i)
{
std::list<unsigned int> to_delete;
for (typename std::map<unsigned int, SCALARTYPE>::iterator it = stl_sparse_matrix[i].begin();
@@ -271,7 +273,7 @@ namespace viennacl
for (std::list<unsigned int>::iterator it = to_delete.begin(); it != to_delete.end(); ++it)
stl_sparse_matrix[i].erase(*it);
}
- std::cout << "Cropping done..." << std::endl;
+ std::cout << "Cropping done..." << std::endl;
}
rows_ = new_size1;
@@ -285,13 +287,13 @@ namespace viennacl
/** @brief Returns the number of rows */
- unsigned int size1() const { return rows_; }
+ std::size_t size1() const { return rows_; }
/** @brief Returns the number of columns */
- unsigned int size2() const { return cols_; }
+ std::size_t size2() const { return cols_; }
/** @brief Returns the number of nonzero entries */
- unsigned int nnz() const { return nonzeros_; }
+ std::size_t nnz() const { return nonzeros_; }
/** @brief Returns the number of internal nonzero entries */
- unsigned int internal_nnz() const { return viennacl::tools::roundUpToNextMultiple<unsigned int>(nonzeros_, ALIGNMENT);; }
+ std::size_t internal_nnz() const { return viennacl::tools::roundUpToNextMultiple<std::size_t>(nonzeros_, ALIGNMENT);; }
/** @brief Returns the OpenCL handle to the (row, column) index array */
const viennacl::ocl::handle<cl_mem> & handle12() const { return coord_buffer_; }
@@ -316,9 +318,9 @@ namespace viennacl
coordinate_matrix & operator=(coordinate_matrix const &);
- unsigned int rows_;
- unsigned int cols_;
- unsigned int nonzeros_;
+ std::size_t rows_;
+ std::size_t cols_;
+ std::size_t nonzeros_;
viennacl::ocl::handle<cl_mem> coord_buffer_;
viennacl::ocl::handle<cl_mem> elements_;
viennacl::ocl::handle<cl_mem> group_boundaries_;
diff --git a/viennacl/fft.hpp b/viennacl/fft.hpp
new file mode 100644
index 0000000..9706431
--- /dev/null
+++ b/viennacl/fft.hpp
@@ -0,0 +1,640 @@
+#ifndef VIENNACL_FFT_HPP
+#define VIENNACL_FFT_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file fft.hpp
+ @brief All routines related to the Fast Fourier Transform. Experimental in 1.2.x.
+*/
+
+#include <viennacl/vector.hpp>
+#include <viennacl/matrix.hpp>
+
+#include "viennacl/linalg/kernels/fft_kernels.h"
+
+#include <cmath>
+
+#include <stdexcept>
+
+namespace viennacl
+{
+ namespace detail
+ {
+ namespace fft
+ {
+ const std::size_t MAX_LOCAL_POINTS_NUM = 512;
+
+ namespace FFT_DATA_ORDER {
+ enum DATA_ORDER {
+ ROW_MAJOR,
+ COL_MAJOR
+ };
+ }
+ }
+ }
+}
+
+/// @cond
+namespace viennacl {
+ namespace detail {
+ namespace fft {
+
+ inline bool is_radix2(std::size_t data_size) {
+ return !((data_size > 2) && (data_size & (data_size - 1)));
+
+ }
+
+ inline std::size_t next_power_2(std::size_t n) {
+ n = n - 1;
+
+ std::size_t power = 1;
+
+ while(power < sizeof(std::size_t) * 8) {
+ n = n | (n >> power);
+ power *= 2;
+ }
+
+ return n + 1;
+ }
+
+ inline std::size_t num_bits(std::size_t size)
+ {
+ std::size_t bits_datasize = 0;
+ std::size_t ds = 1;
+
+ while(ds < size)
+ {
+ ds = ds << 1;
+ bits_datasize++;
+ }
+
+ return bits_datasize;
+ }
+
+
+ /**
+ * @brief Direct algorithm for computing Fourier transformation.
+ *
+ * Works on any sizes of data.
+ * Serial implementation has o(n^2) complexity
+ */
+ template<class SCALARTYPE>
+ void direct(const viennacl::ocl::handle<cl_mem>& in,
+ const viennacl::ocl::handle<cl_mem>& out,
+ std::size_t size,
+ std::size_t stride,
+ std::size_t batch_num,
+ SCALARTYPE sign = -1.0f,
+ FFT_DATA_ORDER::DATA_ORDER data_order = FFT_DATA_ORDER::ROW_MAJOR
+ )
+ {
+ viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::init();
+ std::string program_string = viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::program_name();
+ if (data_order == FFT_DATA_ORDER::COL_MAJOR)
+ {
+ viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::init();
+ program_string = viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::program_name();
+ }
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context().get_program(program_string).get_kernel("fft_direct");
+ viennacl::ocl::enqueue(kernel(in, out, static_cast<cl_uint>(size), static_cast<cl_uint>(stride), static_cast<cl_uint>(batch_num), sign));
+ }
+
+ /*
+ * This function performs reorder of input data. Indexes are sorted in bit-reversal order.
+ * Such reordering should be done before in-place FFT.
+ */
+ template <typename SCALARTYPE>
+ void reorder(const viennacl::ocl::handle<cl_mem>& in,
+ std::size_t size,
+ std::size_t stride,
+ std::size_t bits_datasize,
+ std::size_t batch_num,
+ FFT_DATA_ORDER::DATA_ORDER data_order = FFT_DATA_ORDER::ROW_MAJOR
+ )
+ {
+ viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::init();
+ std::string program_string = viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::program_name();
+ if (data_order == FFT_DATA_ORDER::COL_MAJOR)
+ {
+ viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::init();
+ program_string = viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::program_name();
+ }
+
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(program_string)
+ .get_kernel("fft_reorder");
+ viennacl::ocl::enqueue(kernel(in,
+ static_cast<cl_uint>(bits_datasize),
+ static_cast<cl_uint>(size),
+ static_cast<cl_uint>(stride),
+ static_cast<cl_uint>(batch_num)
+ )
+ );
+ }
+
+ /**
+ * @brief Radix-2 algorithm for computing Fourier transformation.
+ *
+ * Works only on power-of-two sizes of data.
+ * Serial implementation has o(n * lg n) complexity.
+ * This is a Cooley-Tukey algorithm
+ */
+ template<class SCALARTYPE>
+ void radix2(const viennacl::ocl::handle<cl_mem>& in,
+ std::size_t size,
+ std::size_t stride,
+ std::size_t batch_num,
+ SCALARTYPE sign = -1.0f,
+ FFT_DATA_ORDER::DATA_ORDER data_order = FFT_DATA_ORDER::ROW_MAJOR
+ )
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+
+ assert(batch_num != 0);
+ assert(is_radix2(size));
+
+ viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::init();
+ std::string program_string = viennacl::linalg::kernels::matrix_row<SCALARTYPE, 1>::program_name();
+ if (data_order == FFT_DATA_ORDER::COL_MAJOR)
+ {
+ viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::init();
+ program_string = viennacl::linalg::kernels::matrix_col<SCALARTYPE, 1>::program_name();
+ }
+
+ std::size_t bits_datasize = num_bits(size);
+
+ if(size <= MAX_LOCAL_POINTS_NUM)
+ {
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(program_string)
+ .get_kernel("fft_radix2_local");
+ viennacl::ocl::enqueue(kernel(in,
+ viennacl::ocl::local_mem((size * 4) * sizeof(SCALARTYPE)),
+ static_cast<cl_uint>(bits_datasize),
+ static_cast<cl_uint>(size),
+ static_cast<cl_uint>(stride),
+ static_cast<cl_uint>(batch_num),
+ sign));
+ }
+ else
+ {
+ reorder<SCALARTYPE>(in, size, stride, bits_datasize, batch_num);
+
+ for(std::size_t step = 0; step < bits_datasize; step++)
+ {
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(program_string)
+ .get_kernel("fft_radix2");
+ viennacl::ocl::enqueue(kernel(in,
+ static_cast<cl_uint>(step),
+ static_cast<cl_uint>(bits_datasize),
+ static_cast<cl_uint>(size),
+ static_cast<cl_uint>(stride),
+ static_cast<cl_uint>(batch_num),
+ sign));
+ }
+
+ }
+ }
+
+ /**
+ * @brief Bluestein's algorithm for computing Fourier transformation.
+ *
+ * Currently, Works only for sizes of input data which less than 2^16.
+ * Uses a lot of additional memory, but should be fast for any size of data.
+ * Serial implementation has something about o(n * lg n) complexity
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void bluestein(viennacl::vector<SCALARTYPE, ALIGNMENT>& in,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& out,
+ std::size_t batch_num,
+ SCALARTYPE sign = -1.0
+ )
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+
+ std::size_t size = in.size() >> 1;
+ std::size_t ext_size = next_power_2(2 * size - 1);
+
+ viennacl::vector<SCALARTYPE, ALIGNMENT> A(ext_size << 1);
+ viennacl::vector<SCALARTYPE, ALIGNMENT> B(ext_size << 1);
+
+ viennacl::vector<SCALARTYPE, ALIGNMENT> Z(ext_size << 1);
+
+ {
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("zero2");
+ viennacl::ocl::enqueue(kernel(
+ A,
+ B,
+ static_cast<cl_uint>(ext_size)
+ ));
+
+ }
+ {
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("bluestein_pre");
+ viennacl::ocl::enqueue(kernel(
+ in,
+ A,
+ B,
+ static_cast<cl_uint>(size),
+ static_cast<cl_uint>(ext_size)
+ ));
+ }
+
+ viennacl::linalg::convolve_i(A, B, Z);
+
+ {
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("bluestein_post");
+ viennacl::ocl::enqueue(kernel(
+ Z,
+ out,
+ static_cast<cl_uint>(size)
+ ));
+ }
+ }
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void multiply(viennacl::vector<SCALARTYPE, ALIGNMENT> const & input1,
+ viennacl::vector<SCALARTYPE, ALIGNMENT> const & input2,
+ viennacl::vector<SCALARTYPE, ALIGNMENT> & output)
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ std::size_t size = input1.size() >> 1;
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("fft_mult_vec");
+ viennacl::ocl::enqueue(kernel(input1, input2, output, static_cast<cl_uint>(size)));
+ }
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void normalize(viennacl::vector<SCALARTYPE, ALIGNMENT> & input)
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("fft_div_vec_scalar");
+ std::size_t size = input.size() >> 1;
+ SCALARTYPE norm_factor = static_cast<SCALARTYPE>(size);
+ viennacl::ocl::enqueue(kernel(input, static_cast<cl_uint>(size), norm_factor));
+ }
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void transpose(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> & input)
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("transpose_inplace");
+ viennacl::ocl::enqueue(kernel(input,
+ static_cast<cl_uint>(input.internal_size1()),
+ static_cast<cl_uint>(input.internal_size2()) >> 1));
+ }
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void transpose(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> const & input,
+ viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> & output)
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("transpose");
+ viennacl::ocl::enqueue(kernel(input,
+ output,
+ static_cast<cl_uint>(input.internal_size1()),
+ static_cast<cl_uint>(input.internal_size2() >> 1))
+ );
+ }
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void real_to_complex(viennacl::vector<SCALARTYPE, ALIGNMENT> const & in,
+ viennacl::vector<SCALARTYPE, ALIGNMENT> & out,
+ std::size_t size)
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("real_to_complex");
+ viennacl::ocl::enqueue(kernel(in, out, static_cast<cl_uint>(size)));
+ }
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void complex_to_real(viennacl::vector<SCALARTYPE, ALIGNMENT> const & in,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& out,
+ std::size_t size)
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("complex_to_real");
+ viennacl::ocl::enqueue(kernel(in, out, static_cast<cl_uint>(size)));
+ }
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void reverse(viennacl::vector<SCALARTYPE, ALIGNMENT>& in)
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ std::size_t size = in.size();
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("reverse_inplace");
+ viennacl::ocl::enqueue(kernel(in, static_cast<cl_uint>(size)));
+ }
+
+
+ } //namespace fft
+ } //namespace detail
+
+ /**
+ * @brief Generic inplace version of 1-D Fourier transformation.
+ *
+ * @param input Input vector, result will be stored here.
+ * @param batch_num Number of items in batch
+ * @param sign Sign of exponent, default is -1.0
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void inplace_fft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+ std::size_t batch_num = 1,
+ SCALARTYPE sign = -1.0)
+ {
+ std::size_t size = (input.size() >> 1) / batch_num;
+
+ if(!detail::fft::is_radix2(size))
+ {
+ viennacl::vector<SCALARTYPE, ALIGNMENT> output(input.size());
+ detail::fft::direct(input.handle(),
+ output.handle(),
+ size,
+ size,
+ batch_num,
+ sign);
+
+ viennacl::copy(output, input);
+ } else {
+ detail::fft::radix2(input.handle(), size, size, batch_num, sign);
+ }
+ }
+
+ /**
+ * @brief Generic version of 1-D Fourier transformation.
+ *
+ * @param input Input vector.
+ * @param output Output vector.
+ * @param batch_num Number of items in batch.
+ * @param sign Sign of exponent, default is -1.0
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void fft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& output,
+ std::size_t batch_num = 1,
+ SCALARTYPE sign = -1.0
+ )
+ {
+ std::size_t size = (input.size() >> 1) / batch_num;
+
+ if(detail::fft::is_radix2(size))
+ {
+ viennacl::copy(input, output);
+ detail::fft::radix2(output.handle(), size, size, batch_num, sign);
+ } else {
+ detail::fft::direct(input.handle(),
+ output.handle(),
+ size,
+ size,
+ batch_num,
+ sign);
+ }
+ }
+
+ /**
+ * @brief Generic inplace version of 2-D Fourier transformation.
+ *
+ * @param input Input matrix, result will be stored here.
+ * @param sign Sign of exponent, default is -1.0
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void inplace_fft(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>& input,
+ SCALARTYPE sign = -1.0)
+ {
+ std::size_t rows_num = input.size1();
+ std::size_t cols_num = input.size2() >> 1;
+
+ std::size_t cols_int = input.internal_size2() >> 1;
+
+ // batch with rows
+ if(detail::fft::is_radix2(cols_num))
+ {
+ detail::fft::radix2(input.handle(), cols_num, cols_int, rows_num, sign, detail::fft::FFT_DATA_ORDER::ROW_MAJOR);
+ }
+ else
+ {
+ viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> output(input.size1(), input.size2());
+
+ detail::fft::direct(input.handle(),
+ output.handle(),
+ cols_num,
+ cols_int,
+ rows_num,
+ sign,
+ detail::fft::FFT_DATA_ORDER::ROW_MAJOR
+ );
+
+ input = output;
+ }
+
+ // batch with cols
+ if (detail::fft::is_radix2(rows_num)) {
+ detail::fft::radix2(input.handle(), rows_num, cols_int, cols_num, sign, detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+ } else {
+ viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> output(input.size1(), input.size2());
+
+ detail::fft::direct(input.handle(),
+ output.handle(),
+ rows_num,
+ cols_int,
+ cols_num,
+ sign,
+ detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+
+ input = output;
+ }
+
+ }
+
+ /**
+ * @brief Generic version of 2-D Fourier transformation.
+ *
+ * @param input Input vector.
+ * @param output Output vector.
+ * @param sign Sign of exponent, default is -1.0
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void fft(viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>& input,
+ viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT>& output,
+ SCALARTYPE sign = -1.0)
+ {
+ std::size_t rows_num = input.size1();
+ std::size_t cols_num = input.size2() >> 1;
+
+ std::size_t cols_int = input.internal_size2() >> 1;
+
+ // batch with rows
+ if(detail::fft::is_radix2(cols_num))
+ {
+ output = input;
+ detail::fft::radix2(output.handle(), cols_num, cols_int, rows_num, sign, detail::fft::FFT_DATA_ORDER::ROW_MAJOR);
+ }
+ else
+ {
+ detail::fft::direct(input.handle(),
+ output.handle(),
+ cols_num,
+ cols_int,
+ rows_num,
+ sign,
+ detail::fft::FFT_DATA_ORDER::ROW_MAJOR
+ );
+ }
+
+ // batch with cols
+ if(detail::fft::is_radix2(rows_num))
+ {
+ detail::fft::radix2(output.handle(), rows_num, cols_int, cols_num, sign, detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+ }
+ else
+ {
+ viennacl::matrix<SCALARTYPE, viennacl::row_major, ALIGNMENT> tmp(output.size1(), output.size2());
+ tmp = output;
+
+ detail::fft::direct(tmp.handle(),
+ output.handle(),
+ rows_num,
+ cols_int,
+ cols_num,
+ sign,
+ detail::fft::FFT_DATA_ORDER::COL_MAJOR);
+ }
+ }
+
+ /**
+ * @brief Generic inplace version of inverse 1-D Fourier transformation.
+ *
+ * Shorthand function for fft(sign = 1.0)
+ *
+ * @param input Input vector.
+ * @param batch_num Number of items in batch.
+ * @param sign Sign of exponent, default is -1.0
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void inplace_ifft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+ std::size_t batch_num = 1)
+ {
+ viennacl::inplace_fft(input, batch_num, SCALARTYPE(1.0));
+ detail::fft::normalize(input);
+ }
+
+ /**
+ * @brief Generic version of inverse 1-D Fourier transformation.
+ *
+ * Shorthand function for fft(sign = 1.0)
+ *
+ * @param input Input vector.
+ * @param output Output vector.
+ * @param batch_num Number of items in batch.
+ * @param sign Sign of exponent, default is -1.0
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void ifft(viennacl::vector<SCALARTYPE, ALIGNMENT>& input,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& output,
+ std::size_t batch_num = 1
+ )
+ {
+ viennacl::fft(input, output, batch_num, SCALARTYPE(1.0));
+ detail::fft::normalize(output);
+ }
+
+ namespace linalg
+ {
+ /**
+ * @brief 1-D convolution of two vectors.
+ *
+ * This function does not make any changes to input vectors
+ *
+ * @param input1 Input vector #1.
+ * @param input2 Input vector #2.
+ * @param output Output vector.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void convolve(viennacl::vector<SCALARTYPE, ALIGNMENT>& input1,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& input2,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& output
+ )
+ {
+ assert(input1.size() == input2.size());
+ assert(input1.size() == output.size());
+ //temporal arrays
+ viennacl::vector<SCALARTYPE, ALIGNMENT> tmp1(input1.size());
+ viennacl::vector<SCALARTYPE, ALIGNMENT> tmp2(input2.size());
+ viennacl::vector<SCALARTYPE, ALIGNMENT> tmp3(output.size());
+
+ // align input arrays to equal size
+ // FFT of input data
+ viennacl::fft(input1, tmp1);
+ viennacl::fft(input2, tmp2);
+
+ // multiplication of input data
+ viennacl::detail::fft::multiply(tmp1, tmp2, tmp3);
+ // inverse FFT of input data
+ viennacl::ifft(tmp3, output);
+ }
+
+ /**
+ * @brief 1-D convolution of two vectors.
+ *
+ * This function can make changes to input vectors to avoid additional memory allocations.
+ *
+ * @param input1 Input vector #1.
+ * @param input2 Input vector #2.
+ * @param output Output vector.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ void convolve_i(viennacl::vector<SCALARTYPE, ALIGNMENT>& input1,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& input2,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& output
+ )
+ {
+ assert(input1.size() == input2.size());
+ assert(input1.size() == output.size());
+
+ viennacl::inplace_fft(input1);
+ viennacl::inplace_fft(input2);
+
+ viennacl::detail::fft::multiply(input1, input2, output);
+
+ viennacl::inplace_ifft(output);
+ }
+ }
+} //namespace linalg
+
+/// @endcond
+#endif
diff --git a/viennacl/forwards.h b/viennacl/forwards.h
index 1b20c72..ee41201 100644
--- a/viennacl/forwards.h
+++ b/viennacl/forwards.h
@@ -1,23 +1,29 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_FORWARDS_H
+#define VIENNACL_FORWARDS_H
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
/** @file viennacl/forwards.h
@brief This file provides the forward declarations for the main types used within ViennaCL
*/
/**
- @mainpage Source Code Documentation for ViennaCL 1.1.2
+ @mainpage Source Code Documentation for ViennaCL 1.2.0
This is the source code documentation of ViennaCL. Detailed information about the functions in ViennaCL can be found here.
@@ -25,12 +31,9 @@
*/
-#ifndef VIENNACL_FORWARDS_H
-#define VIENNACL_FORWARDS_H
-
-//#include <stddef.h>
#include <cstddef>
#include "viennacl/ocl/forwards.h"
+#include "viennacl/meta/enable_if.hpp"
namespace viennacl
{
@@ -112,14 +115,52 @@ namespace viennacl
template <typename LHS, typename RHS, typename OP>
class matrix_expression;
+ //
+ // Matrix types:
+ //
template <class SCALARTYPE, typename F = row_major, unsigned int ALIGNMENT = 1>
class matrix;
-
+
template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
class compressed_matrix;
template<class SCALARTYPE, unsigned int ALIGNMENT = 128>
class coordinate_matrix;
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+ class circulant_matrix;
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+ class hankel_matrix;
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+ class toeplitz_matrix;
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT = 1>
+ class vandermonde_matrix;
+
+ //
+ // Proxies:
+ //
+ template <typename SizeType = std::size_t, typename DistanceType = std::ptrdiff_t>
+ class basic_range;
+
+ typedef basic_range<> range;
+
+ template <typename MatrixType>
+ class matrix_range;
+
+ template <typename VectorType>
+ class vector_range;
+
+ template <typename T>
+ struct is_scalar;
+
+ template <typename T>
+ struct is_vector;
+
+ template <typename T>
+ struct is_matrix;
namespace tools
{
@@ -137,20 +178,36 @@ namespace viennacl
namespace linalg
{
- //forward definition of norm_1_impl function
template<class SCALARTYPE, unsigned int ALIGNMENT>
- void norm_1_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
- scalar<SCALARTYPE> & result);
+ void convolve_i(viennacl::vector<SCALARTYPE, ALIGNMENT>& input1,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& input2,
+ viennacl::vector<SCALARTYPE, ALIGNMENT>& output);
+
+#ifndef _MSC_VER
+ //forward definition of norm_1_impl function
+ template <typename V1, typename S2>
+ void norm_1_impl(V1 const & vec,
+ S2 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ >::type * dummy = 0);
//forward definition of norm_2_impl function
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void norm_2_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
- scalar<SCALARTYPE> & result);
+ template <typename V1, typename S2>
+ void norm_2_impl(V1 const & vec,
+ S2 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ >::type * dummy = 0);
//forward definition of norm_inf_impl function
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void norm_inf_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
- scalar<SCALARTYPE> & result);
+ template <typename V1, typename S2>
+ void norm_inf_impl(V1 const & vec,
+ S2 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ >::type * dummy = 0);
+#endif
//forward definition of prod_impl functions
template<class SCALARTYPE, typename F, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
@@ -173,17 +230,26 @@ namespace viennacl
//forward definition of inner_prod_impl function
- template<class SCALARTYPE, unsigned int ALIGNMENT1, unsigned int ALIGNMENT2>
- viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1>,
- const viennacl::vector<SCALARTYPE, ALIGNMENT2>,
- viennacl::op_inner_prod >
- inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT1> &,
- const viennacl::vector<SCALARTYPE, ALIGNMENT2> &);
-
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- scalar<SCALARTYPE> & result);
+ /*template <typename V1, typename V2>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value,
+ viennacl::scalar_expression< const V1,
+ const V2,
+ viennacl::op_inner_prod >
+ >::type
+ inner_prod_impl(V1 const & vec1,
+ V2 const & vec2);*/
+
+#ifndef _MSC_VER
+ template <typename V1, typename V2, typename S3>
+ void inner_prod_impl(V1 const & vec1,
+ V2 const & vec2,
+ S3 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_scalar<S3>::value
+ >::type * dummy = 0);
+#endif
/** @brief A tag class representing a lower triangular matrix */
diff --git a/viennacl/hankel_matrix.hpp b/viennacl/hankel_matrix.hpp
new file mode 100644
index 0000000..8968010
--- /dev/null
+++ b/viennacl/hankel_matrix.hpp
@@ -0,0 +1,241 @@
+#ifndef VIENNACL_HANKEL_MATRIX_HPP
+#define VIENNACL_HANKEL_MATRIX_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file hankel_matrix.hpp
+ @brief Implementation of the hankel_matrix class for efficient manipulation of Hankel matrices. Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/toeplitz_matrix.hpp"
+#include "viennacl/fft.hpp"
+
+#include "viennacl/linalg/hankel_matrix_operations.hpp"
+
+namespace viennacl {
+ /** @brief A Hankel matrix class
+ *
+ * @tparam SCALARTYPE The underlying scalar type (either float or double)
+ * @tparam ALIGNMENT The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ class hankel_matrix
+ {
+ public:
+ /**
+ * @brief The default constructor. Does not allocate any memory.
+ *
+ */
+ explicit hankel_matrix()
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+ /**
+ * @brief Creates the matrix with the given size
+ *
+ * @param rows Number of rows of the matrix
+ * @param cols Number of columns of the matrix
+ */
+ explicit hankel_matrix(std::size_t rows, std::size_t cols) : elements_(rows, cols)
+ {
+ assert(rows == cols && "Hankel matrix must be square!");
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+ /** @brief Resizes the matrix.
+ * Existing entries can be preserved
+ *
+ * @param sz New size of matrix
+ * @param preserve If true, existing values are preserved.
+ */
+ void resize(size_t sz, bool preserve = true)
+ {
+ elements_.resize(sz, preserve);
+ }
+
+ /** @brief Returns the OpenCL handle
+ *
+ * @return OpenCL handle
+ */
+ viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+ /**
+ * @brief Returns an internal viennacl::toeplitz_matrix, which represents a Hankel matrix elements
+ *
+ */
+ toeplitz_matrix<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+ toeplitz_matrix<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+ /**
+ * @brief Returns the number of rows of the matrix
+ */
+ std::size_t size1() const { return elements_.size1(); }
+
+ /**
+ * @brief Returns the number of columns of the matrix
+ */
+ std::size_t size2() const { return elements_.size2(); }
+
+ /** @brief Returns the internal size of matrix representtion.
+ * Usually required for launching OpenCL kernels only
+ *
+ * @return Internal size of matrix representation
+ */
+ std::size_t internal_size() const { return elements_.internal_size(); }
+
+ /**
+ * @brief Read-write access to a element of the matrix
+ *
+ * @param row_index Row index of accessed element
+ * @param col_index Column index of accessed element
+ * @return Proxy for matrix entry
+ */
+ entry_proxy<SCALARTYPE> operator()(unsigned int row_index, unsigned int col_index)
+ {
+ assert(row_index < size1() && col_index < size2() && "Invalid access");
+
+ return elements_(size1() - row_index - 1, col_index);
+ }
+
+ /**
+ * @brief += operation for Hankel matrices
+ *
+ * @param that Matrix which will be added
+ * @return Result of addition
+ */
+ hankel_matrix<SCALARTYPE, ALIGNMENT>& operator +=(hankel_matrix<SCALARTYPE, ALIGNMENT>& that)
+ {
+ elements_ += that.elements();
+ return *this;
+ }
+
+ private:
+ hankel_matrix(hankel_matrix const & t) {}
+ hankel_matrix & operator=(hankel_matrix const & t) {}
+
+ toeplitz_matrix<SCALARTYPE, ALIGNMENT> elements_;
+ };
+
+ /** @brief Copies a Hankel matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param cpu_vec A std::vector on the host.
+ * @param gpu_mat A hankel_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(std::vector<SCALARTYPE> const & cpu_vec, hankel_matrix<SCALARTYPE, ALIGNMENT> & gpu_mat)
+ {
+ assert((gpu_mat.size1() * 2 - 1) == cpu_vec.size() && "Size mismatch");
+
+ copy(cpu_vec, gpu_mat.elements());
+ }
+
+ /** @brief Copies a Hankel matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+ *
+ *
+ * @param gpu_mat A hankel_matrix from ViennaCL
+ * @param cpu_vec A std::vector on the host.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(hankel_matrix<SCALARTYPE, ALIGNMENT> const & gpu_mat, std::vector<SCALARTYPE> & cpu_vec)
+ {
+ assert((gpu_mat.size1() * 2 - 1) == cpu_vec.size() && "Size mismatch");
+
+ copy(gpu_mat.elements(), cpu_vec);
+ }
+
+ /** @brief Copies a Hankel matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+ *
+ *
+ * @param han_src A hankel_matrix from ViennaCL
+ * @param com_dst A matrix-like object
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(hankel_matrix<SCALARTYPE, ALIGNMENT> const & han_src, MATRIXTYPE& com_dst)
+ {
+ std::size_t size = han_src.size1();
+ assert(size == com_dst.size1() && "Size mismatch");
+ assert(size == com_dst.size2() && "Size mismatch");
+ std::vector<SCALARTYPE> tmp(size * 2 - 1);
+ copy(han_src, tmp);
+
+ for (std::size_t i = 0; i < size; i++)
+ for (std::size_t j = 0; j < size; j++)
+ com_dst(i, j) = tmp[i + j];
+ }
+
+ /** @brief Copies a the matrix-like object to the Hankel matrix from the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param com_src A std::vector on the host
+ * @param han_dst A hankel_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(MATRIXTYPE const & com_src, hankel_matrix<SCALARTYPE, ALIGNMENT>& han_dst)
+ {
+ std::size_t size = han_dst.size1();
+ assert(size == com_src.size1() && "Size mismatch");
+ assert(size == com_src.size2() && "Size mismatch");
+
+ std::vector<SCALARTYPE> tmp(2*size - 1);
+
+ for (std::size_t i = 0; i < size; i++)
+ tmp[i] = com_src(0, i);
+
+ for (std::size_t i = 1; i < size; i++)
+ tmp[size + i - 1] = com_src(size - 1, i);
+
+ viennacl::copy(tmp, han_dst);
+ }
+
+ /*template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(hankel_matrix<SCALARTYPE, ALIGNMENT>& mat,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT>& vec,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT>& result)
+ {
+ prod_impl(mat.elements(), vec, result);
+ fft::reverse(result);
+ }*/
+
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ std::ostream & operator<<(std::ostream & s, hankel_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+ {
+ std::size_t size = gpu_matrix.size1();
+ std::vector<SCALARTYPE> tmp(2*size - 1);
+ copy(gpu_matrix, tmp);
+ s << "[" << size << "," << size << "](";
+
+ for(std::size_t i = 0; i < size; i++) {
+ s << "(";
+ for(std::size_t j = 0; j < size; j++) {
+ s << tmp[i + j];
+ //s << (int)i - (int)j;
+ if(j < (size - 1)) s << ",";
+ }
+ s << ")";
+ }
+ s << ")";
+ return s;
+ }
+}
+#endif // _VIENNACL_HANKEL_MATRIX_HPP
diff --git a/viennacl/io/kernel_parameters.hpp b/viennacl/io/kernel_parameters.hpp
index 6ac39f9..6a81f25 100644
--- a/viennacl/io/kernel_parameters.hpp
+++ b/viennacl/io/kernel_parameters.hpp
@@ -1,20 +1,22 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_IO_KERNEL_PARAMETERS_HPP
+#define VIENNACL_IO_KERNEL_PARAMETERS_HPP
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
-#ifndef VIENNACL_IO_KERNEL_PARAMETERS_HPP
-#define VIENNACL_IO_KERNEL_PARAMETERS_HPP
/** @file kernel_parameters.hpp
@brief This file holds the code necessary for reading kernel parameters from XML files using pugixml
@@ -23,36 +25,38 @@
#include "viennacl/ocl/backend.hpp"
#include "pugixml/src/pugixml.hpp"
-namespace viennacl {
- namespace io {
-
- namespace tag {
- std::string root = "parameters";
- std::string devices = "devices";
- std::string device = "device";
- std::string name = "name";
- std::string driver = "driver";
- std::string compun = "computeunits";
- std::string workgrp = "workgroupsize";
- std::string tests = "tests";
- std::string test = "test";
- std::string numeric = "numeric";
- std::string kernels = "kernels";
- std::string kernel = "kernel";
- std::string params = "params";
- std::string param = "param";
- std::string value = "value";
- std::string alignment = "alignment";
+namespace viennacl
+{
+ namespace io
+ {
+ namespace tag
+ {
+ static std::string root = "parameters";
+ static std::string devices = "devices";
+ static std::string device = "device";
+ static std::string name = "name";
+ static std::string driver = "driver";
+ static std::string compun = "computeunits";
+ static std::string workgrp = "workgroupsize";
+ static std::string tests = "tests";
+ static std::string test = "test";
+ static std::string numeric = "numeric";
+ static std::string kernels = "kernels";
+ static std::string kernel = "kernel";
+ static std::string params = "params";
+ static std::string param = "param";
+ static std::string value = "value";
+ static std::string alignment = "alignment";
} // end namespace tag
namespace val {
- std::string globsize = "globalsize";
- std::string locsize = "localsize";
- std::string vec = "vector";
- std::string matrix = "matrix";
- std::string compmat = "compressed_matrix";
- std::string fl = "float";
- std::string dbl = "double";
+ static std::string globsize = "globalsize";
+ static std::string locsize = "localsize";
+ static std::string vec = "vector";
+ static std::string matrix = "matrix";
+ static std::string compmat = "compressed_matrix";
+ static std::string fl = "float";
+ static std::string dbl = "double";
}
/** @brief A XML parameter database using PugiXML. Allows to add tests for different devices and the like */
diff --git a/viennacl/io/matrix_market.hpp b/viennacl/io/matrix_market.hpp
index 152e523..8c4b6f4 100644
--- a/viennacl/io/matrix_market.hpp
+++ b/viennacl/io/matrix_market.hpp
@@ -1,20 +1,22 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_IO_MATRIX_MARKET_HPP
+#define VIENNACL_IO_MATRIX_MARKET_HPP
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
-#ifndef _VIENNACL_MATRIX_MARKET_HPP_
-#define _VIENNACL_MATRIX_MARKET_HPP_
/** @file matrix_market.hpp
@brief A reader and writer for the matrix market format is implemented here
@@ -29,6 +31,8 @@
#include <map>
#include <cctype>
#include "viennacl/tools/adapter.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/traits/fill.hpp"
namespace viennacl
{
@@ -218,7 +222,7 @@ namespace viennacl
}
if (rows > 0 && cols > 0)
- mat.resize(rows, cols, false);
+ viennacl::traits::resize(mat, rows, cols);
is_header = false;
}
@@ -229,9 +233,9 @@ namespace viennacl
{
double value;
line >> value;
- mat(cur_row, cur_col) = value;
+ viennacl::traits::fill(mat, cur_row, cur_col, value);
- if (++cur_row == static_cast<long>(mat.size1()))
+ if (++cur_row == static_cast<long>(viennacl::traits::size1(mat)))
{
//next column
++cur_col;
@@ -273,21 +277,21 @@ namespace viennacl
return 0;
}
- if (row >= static_cast<long>(mat.size1()) || row < 0)
+ if (row >= static_cast<long>(viennacl::traits::size1(mat)) || row < 0)
{
- std::cerr << "Error in file " << file << " at line " << linenum << ": Row index out of bounds: " << row << " (matrix dim: " << mat.size1() << " x " << mat.size2() << ")" << std::endl;
+ std::cerr << "Error in file " << file << " at line " << linenum << ": Row index out of bounds: " << row << " (matrix dim: " << viennacl::traits::size1(mat) << " x " << viennacl::traits::size2(mat) << ")" << std::endl;
return 0;
}
- if (col >= static_cast<long>(mat.size2()) || col < 0)
+ if (col >= static_cast<long>(viennacl::traits::size2(mat)) || col < 0)
{
- std::cerr << "Error in file " << file << " at line " << linenum << ": Column index out of bounds: " << col << " (matrix dim: " << mat.size1() << " x " << mat.size2() << ")" << std::endl;
+ std::cerr << "Error in file " << file << " at line " << linenum << ": Column index out of bounds: " << col << " (matrix dim: " << viennacl::traits::size1(mat) << " x " << viennacl::traits::size2(mat) << ")" << std::endl;
return 0;
}
- mat(row, col) = value;
+ viennacl::traits::fill(mat, row, col, value); //basically equivalent to mat(row, col) = value;
if (symmetric)
- mat(col, row) = value;
+ viennacl::traits::fill(mat, col, row, value); //basically equivalent to mat(col, row) = value;
if (++valid_entries == nnz)
break;
diff --git a/viennacl/linalg/amg.hpp b/viennacl/linalg/amg.hpp
new file mode 100755
index 0000000..f055bed
--- /dev/null
+++ b/viennacl/linalg/amg.hpp
@@ -0,0 +1,768 @@
+#ifndef VIENNACL_LINALG_AMG_HPP_
+#define VIENNACL_LINALG_AMG_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/amg.hpp
+ @brief Main include file for algebraic multigrid (AMG) preconditioners. Experimental in 1.2.x.
+
+ Implementation contributed by Markus Wagner
+*/
+
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/lu.hpp>
+#include <boost/numeric/ublas/operation.hpp>
+#include <boost/numeric/ublas/vector_proxy.hpp>
+#include <boost/numeric/ublas/matrix_proxy.hpp>
+#include <boost/numeric/ublas/vector.hpp>
+#include <boost/numeric/ublas/triangular.hpp>
+#include <vector>
+#include <cmath>
+#include "viennacl/forwards.h"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/linalg/direct_solve.hpp"
+
+#include "viennacl/linalg/detail/amg/amg_base.hpp"
+#include "viennacl/linalg/detail/amg/amg_coarse.hpp"
+#include "viennacl/linalg/detail/amg/amg_interpol.hpp"
+
+#include <map>
+
+#ifdef _OPENMP
+ #include <omp.h>
+#endif
+
+#include "viennacl/linalg/detail/amg/amg_debug.hpp"
+
+#define VIENNACL_AMG_COARSE_LIMIT 50
+#define VIENNACL_AMG_MAX_LEVELS 100
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ typedef detail::amg::amg_tag amg_tag;
+
+
+
+ /** @brief Setup AMG preconditioner
+ *
+ * @param A Operator matrices on all levels
+ * @param P Prolongation/Interpolation operators on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_setup(InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ unsigned int i, iterations, c_points, f_points;
+ detail::amg::amg_slicing<InternalType1,InternalType2> Slicing;
+
+ // Set number of iterations. If automatic coarse grid construction is chosen (0), then set a maximum size and stop during the process.
+ iterations = tag.get_coarselevels();
+ if (iterations == 0)
+ iterations = VIENNACL_AMG_MAX_LEVELS;
+
+ // For parallel coarsenings build data structures (number of threads set automatically).
+ if (tag.get_coarse() == VIENNACL_AMG_COARSE_RS0 || tag.get_coarse() == VIENNACL_AMG_COARSE_RS3)
+ Slicing.init(iterations);
+
+ for (i=0; i<iterations; ++i)
+ {
+ // Initialize Pointvector on level i and construct points.
+ Pointvector[i] = PointVectorType(A[i].size1());
+ Pointvector[i].init_points();
+
+ // Construct C and F points on coarse level (i is fine level, i+1 coarse level).
+ detail::amg::amg_coarse (i, A, Pointvector, Slicing, tag);
+
+ // Calculate number of C and F points on level i.
+ c_points = Pointvector[i].get_cpoints();
+ f_points = Pointvector[i].get_fpoints();
+
+ #if defined (DEBUG) //or defined(DEBUGBENCH)
+ std::cout << "Level " << i << ": ";
+ std::cout << "No of C points = " << c_points << ", ";
+ std::cout << "No of F points = " << f_points << std::endl;
+ #endif
+
+ // Stop routine when the maximal coarse level is found (no C or F point). Coarsest level is level i.
+ if (c_points == 0 || f_points == 0)
+ break;
+
+ // Construct interpolation matrix for level i.
+ detail::amg::amg_interpol (i, A, P, Pointvector, tag);
+
+ // Compute coarse grid operator (A[i+1] = R * A[i] * P) with R = trans(P).
+ detail::amg::amg_galerkin_prod(A[i], P[i], A[i+1]);
+
+ // Test triple matrix product. Very slow for large matrix sizes (ublas).
+ // test_triplematprod(A[i],P[i],A[i+1]);
+
+ Pointvector[i].delete_points();
+
+ #ifdef DEBUG
+ std::cout << "Coarse Grid Operator Matrix:" << std::endl;
+ printmatrix (A[i+1]);
+ #endif
+
+ // If Limit of coarse points is reached then stop. Coarsest level is level i+1.
+ if (tag.get_coarselevels() == 0 && c_points <= VIENNACL_AMG_COARSE_LIMIT)
+ {
+ tag.set_coarselevels(i+1);
+ return;
+ }
+ }
+ tag.set_coarselevels(i);
+ }
+
+ /** @brief Initialize AMG preconditioner
+ *
+ * @param mat System matrix
+ * @param A Operator matrices on all levels
+ * @param P Prolongation/Interpolation operators on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename MatrixType, typename InternalType1, typename InternalType2>
+ void amg_init(MatrixType const & mat, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+ typedef typename InternalType1::value_type SparseMatrixType;
+
+ if (tag.get_coarselevels() > 0)
+ {
+ A.resize(tag.get_coarselevels()+1);
+ P.resize(tag.get_coarselevels());
+ Pointvector.resize(tag.get_coarselevels());
+ }
+ else
+ {
+ A.resize(VIENNACL_AMG_MAX_LEVELS+1);
+ P.resize(VIENNACL_AMG_MAX_LEVELS);
+ Pointvector.resize(VIENNACL_AMG_MAX_LEVELS);
+ }
+
+ // Insert operator matrix as operator for finest level.
+ SparseMatrixType A0 (mat);
+ A.insert_element (0, A0);
+ }
+
+ /** @brief Save operators after setup phase for CPU computation.
+ *
+ * @param A Operator matrices on all levels on the CPU
+ * @param P Prolongation/Interpolation operators on all levels on the CPU
+ * @param R Restriction operators on all levels on the CPU
+ * @param A_setup Operators matrices on all levels from setup phase
+ * @param P_setup Prolongation/Interpolation operators on all levels from setup phase
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_transform_cpu (InternalType1 & A, InternalType1 & P, InternalType1 & R, InternalType2 & A_setup, InternalType2 & P_setup, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type MatrixType;
+
+ // Resize internal data structures to actual size.
+ A.resize(tag.get_coarselevels()+1);
+ P.resize(tag.get_coarselevels());
+ R.resize(tag.get_coarselevels());
+
+ // Transform into matrix type.
+ for (unsigned int i=0; i<tag.get_coarselevels()+1; ++i)
+ {
+ A[i].resize(A_setup[i].size1(),A_setup[i].size2(),false);
+ A[i] = A_setup[i];
+ }
+ for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+ {
+ P[i].resize(P_setup[i].size1(),P_setup[i].size2(),false);
+ P[i] = P_setup[i];
+ }
+ for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+ {
+ R[i].resize(P_setup[i].size2(),P_setup[i].size1(),false);
+ P_setup[i].set_trans(true);
+ R[i] = P_setup[i];
+ P_setup[i].set_trans(false);
+ }
+ }
+
+ /** @brief Save operators after setup phase for GPU computation.
+ *
+ * @param A Operator matrices on all levels on the GPU
+ * @param P Prolongation/Interpolation operators on all levels on the GPU
+ * @param R Restriction operators on all levels on the GPU
+ * @param A_setup Operators matrices on all levels from setup phase
+ * @param P_setup Prolongation/Interpolation operators on all levels from setup phase
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_transform_gpu (InternalType1 & A, InternalType1 & P, InternalType1 & R, InternalType2 & A_setup, InternalType2 & P_setup, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type MatrixType;
+ typedef typename InternalType2::value_type::value_type ScalarType;
+
+ // Resize internal data structures to actual size.
+ A.resize(tag.get_coarselevels()+1);
+ P.resize(tag.get_coarselevels());
+ R.resize(tag.get_coarselevels());
+
+ // Copy to GPU using the internal sparse matrix structure: std::vector<std::map>.
+ for (unsigned int i=0; i<tag.get_coarselevels()+1; ++i)
+ {
+ A[i].resize(A_setup[i].size1(),A_setup[i].size2(),false);
+ viennacl::copy(*(A_setup[i].get_internal_pointer()),A[i]);
+ }
+ for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+ {
+ P[i].resize(P_setup[i].size1(),P_setup[i].size2(),false);
+ viennacl::copy(*(P_setup[i].get_internal_pointer()),P[i]);
+ //viennacl::copy((boost::numeric::ublas::compressed_matrix<ScalarType>)P_setup[i],P[i]);
+ }
+ for (unsigned int i=0; i<tag.get_coarselevels(); ++i)
+ {
+ R[i].resize(P_setup[i].size2(),P_setup[i].size1(),false);
+ P_setup[i].set_trans(true);
+ viennacl::copy(*(P_setup[i].get_internal_pointer()),R[i]);
+ P_setup[i].set_trans(false);
+ }
+ }
+
+ /** @brief Setup data structures for precondition phase.
+ *
+ * @param result Result vector on all levels
+ * @param rhs RHS vector on all levels
+ * @param residual Residual vector on all levels
+ * @param A Operators matrices on all levels from setup phase
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalVectorType, typename SparseMatrixType>
+ void amg_setup_apply (InternalVectorType & result, InternalVectorType & rhs, InternalVectorType & residual, SparseMatrixType const & A, amg_tag const & tag)
+ {
+ typedef typename InternalVectorType::value_type VectorType;
+
+ result.resize(tag.get_coarselevels()+1);
+ rhs.resize(tag.get_coarselevels()+1);
+ residual.resize(tag.get_coarselevels());
+
+ for (unsigned int level=0; level < tag.get_coarselevels()+1; ++level)
+ {
+ result[level] = VectorType(A[level].size1());
+ result[level].clear();
+ rhs[level] = VectorType(A[level].size1());
+ rhs[level].clear();
+ }
+ for (unsigned int level=0; level < tag.get_coarselevels(); ++level)
+ {
+ residual[level] = VectorType(A[level].size1());
+ residual[level].clear();
+ }
+ }
+ /** @brief Pre-compute LU factorization for direct solve (ublas library).
+ * @brief Speeds up precondition phase as this is computed only once overall instead of once per iteration.
+ *
+ * @param op Operator matrix for direct solve
+ * @param Permutation Permutation matrix which saves the factorization result
+ * @param A Operator matrix on coarsest level
+ */
+ template <typename ScalarType, typename SparseMatrixType>
+ void amg_lu(boost::numeric::ublas::compressed_matrix<ScalarType> & op, boost::numeric::ublas::permutation_matrix<ScalarType> & Permutation, SparseMatrixType const & A)
+ {
+ typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+ typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+
+ // Copy to operator matrix. Needed
+ op.resize(A.size1(),A.size2(),false);
+ for (ConstRowIterator row_iter = A.begin1(); row_iter != A.end1(); ++row_iter)
+ for (ConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ op (col_iter.index1(), col_iter.index2()) = *col_iter;
+
+ // Permutation matrix has to be reinitialized with actual size. Do not clear() or resize()!
+ Permutation = boost::numeric::ublas::permutation_matrix<ScalarType> (op.size1());
+ boost::numeric::ublas::lu_factorize(op,Permutation);
+ }
+
+ /** @brief AMG preconditioner class, can be supplied to solve()-routines
+ */
+ template <typename MatrixType>
+ class amg_precond
+ {
+ typedef typename MatrixType::value_type ScalarType;
+ typedef boost::numeric::ublas::vector<ScalarType> VectorType;
+ typedef detail::amg::amg_sparsematrix<ScalarType> SparseMatrixType;
+ typedef detail::amg::amg_pointvector PointVectorType;
+
+ typedef typename SparseMatrixType::const_iterator1 InternalConstRowIterator;
+ typedef typename SparseMatrixType::const_iterator2 InternalConstColIterator;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ boost::numeric::ublas::vector <SparseMatrixType> A_setup;
+ boost::numeric::ublas::vector <SparseMatrixType> P_setup;
+ boost::numeric::ublas::vector <MatrixType> A;
+ boost::numeric::ublas::vector <MatrixType> P;
+ boost::numeric::ublas::vector <MatrixType> R;
+ boost::numeric::ublas::vector <PointVectorType> Pointvector;
+
+ mutable boost::numeric::ublas::compressed_matrix<ScalarType> op;
+ mutable boost::numeric::ublas::permutation_matrix<ScalarType> Permutation;
+
+ mutable boost::numeric::ublas::vector <VectorType> result;
+ mutable boost::numeric::ublas::vector <VectorType> rhs;
+ mutable boost::numeric::ublas::vector <VectorType> residual;
+
+ mutable bool done_init_apply;
+
+ amg_tag _tag;
+ public:
+
+ amg_precond(): Permutation(0) {}
+ /** @brief The constructor. Saves system matrix, tag and builds data structures for setup.
+ *
+ * @param mat System matrix
+ * @param tag The AMG tag
+ */
+ amg_precond(MatrixType const & mat, amg_tag const & tag): Permutation(0)
+ {
+ _tag = tag;
+ // Initialize data structures.
+ amg_init (mat,A_setup,P_setup,Pointvector,_tag);
+
+ done_init_apply = false;
+ }
+
+ /** @brief Start setup phase for this class and copy data structures.
+ */
+ void setup()
+ {
+ // Start setup phase.
+ amg_setup(A_setup,P_setup,Pointvector,_tag);
+ // Transform to CPU-Matrixtype for precondition phase.
+ amg_transform_cpu(A,P,R,A_setup,P_setup,_tag);
+
+ done_init_apply = false;
+ }
+
+ /** @brief Prepare data structures for preconditioning:
+ * Build data structures for precondition phase.
+ * Do LU factorization on coarsest level.
+ */
+ void init_apply() const
+ {
+ // Setup precondition phase (Data structures).
+ amg_setup_apply(result,rhs,residual,A_setup,_tag);
+ // Do LU factorization for direct solve.
+ amg_lu(op,Permutation,A_setup[_tag.get_coarselevels()]);
+
+ done_init_apply = true;
+ }
+
+ /** @brief Returns complexity measures.
+ *
+ * @param avgstencil Average stencil sizes on all levels
+ * @return Operator complexity of AMG method
+ */
+ template <typename VectorType>
+ ScalarType calc_complexity(VectorType & avgstencil)
+ {
+ avgstencil = VectorType (_tag.get_coarselevels()+1);
+ unsigned int nonzero=0, systemmat_nonzero=0, level_coefficients=0;
+
+ for (unsigned int level=0; level < _tag.get_coarselevels()+1; ++level)
+ {
+ level_coefficients = 0;
+ for (InternalRowIterator row_iter = A_setup[level].begin1(); row_iter != A_setup[level].end1(); ++row_iter)
+ {
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (level == 0)
+ systemmat_nonzero++;
+ nonzero++;
+ level_coefficients++;
+ }
+ }
+ avgstencil[level] = level_coefficients/(double)A_setup[level].size1();
+ }
+ return nonzero/static_cast<double>(systemmat_nonzero);
+ }
+
+ /** @brief Precondition Operation
+ *
+ * @param vec The vector to which preconditioning is applied to (ublas version)
+ */
+ template <typename VectorType>
+ void apply(VectorType & vec) const
+ {
+ // Build data structures and do lu factorization before first iteration step.
+ if (!done_init_apply)
+ init_apply();
+
+ int level;
+
+ // Precondition operation (Yang, p.3)
+ rhs[0] = vec;
+ for (level=0; level <(signed)_tag.get_coarselevels(); level++)
+ {
+ result[level].clear();
+
+ // Apply Smoother _presmooth times.
+ smooth_jacobi (level, _tag.get_presmooth(), result[level], rhs[level]);
+
+ #ifdef DEBUG
+ std::cout << "After presmooth:" << std::endl;
+ printvector(result[level]);
+ #endif
+
+ // Compute residual.
+ residual[level] = rhs[level] - boost::numeric::ublas::prod (A[level],result[level]);
+
+ #ifdef DEBUG
+ std::cout << "Residual:" << std::endl;
+ printvector(residual[level]);
+ #endif
+
+ // Restrict to coarse level. Restricted residual is RHS of coarse level.
+ rhs[level+1] = boost::numeric::ublas::prod (R[level],residual[level]);
+
+ #ifdef DEBUG
+ std::cout << "Restricted Residual: " << std::endl;
+ printvector(rhs[level+1]);
+ #endif
+ }
+
+ // On highest level use direct solve to solve equation.
+ result[level] = rhs[level];
+ boost::numeric::ublas::lu_substitute(op,Permutation,result[level]);
+
+ #ifdef DEBUG
+ std::cout << "After direct solve: " << std::endl;
+ printvector (result[level]);
+ #endif
+
+ for (level=_tag.get_coarselevels()-1; level >= 0; level--)
+ {
+ #ifdef DEBUG
+ std::cout << "Coarse Error: " << std::endl;
+ printvector(result[level+1]);
+ #endif
+
+ // Interpolate error to fine level. Correct solution by adding error.
+ result[level] += boost::numeric::ublas::prod (P[level], result[level+1]);
+
+ #ifdef DEBUG
+ std::cout << "Corrected Result: " << std::endl;
+ printvector (result[level]);
+ #endif
+
+ // Apply Smoother _postsmooth times.
+ smooth_jacobi (level, _tag.get_postsmooth(), result[level], rhs[level]);
+
+ #ifdef DEBUG
+ std::cout << "After postsmooth: " << std::endl;
+ printvector (result[level]);
+ #endif
+ }
+ vec = result[0];
+ }
+
+ /** @brief (Weighted) Jacobi Smoother (CPU version)
+ * @param level Coarse level to which smoother is applied to
+ * @param iterations Number of smoother iterations
+ * @param x The vector smoothing is applied to
+ * @param rhs The right hand side of the equation for the smoother
+ */
+ template <typename VectorType>
+ void smooth_jacobi(int level, int const iterations, VectorType & x, VectorType const & rhs) const
+ {
+ VectorType old_result (x.size());
+ unsigned int index;
+ ScalarType sum = 0, diag = 1;
+
+ for (int i=0; i<iterations; ++i)
+ {
+ old_result = x;
+ x.clear();
+#ifdef _OPENMP
+ #pragma omp parallel for private (sum,diag) shared (rhs,x)
+#endif
+ for (index=0; index<A_setup[level].size1(); ++index)
+ {
+ InternalConstRowIterator row_iter = A_setup[level].begin1();
+ row_iter += index;
+ sum = 0;
+ diag = 1;
+ for (InternalConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (col_iter.index1() == col_iter.index2())
+ diag = *col_iter;
+ else
+ sum += *col_iter * old_result[col_iter.index2()];
+ }
+ x[index]= _tag.get_jacobiweight() * (rhs[index] - sum) / diag + (1-_tag.get_jacobiweight()) * old_result[index];
+ }
+ }
+ }
+
+ amg_tag & tag() { return _tag; }
+ };
+
+ /** @brief AMG preconditioner class, can be supplied to solve()-routines.
+ *
+ * Specialization for compressed_matrix
+ */
+ template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+ class amg_precond< compressed_matrix<ScalarType, MAT_ALIGNMENT> >
+ {
+ typedef viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> MatrixType;
+ typedef viennacl::vector<ScalarType> VectorType;
+ typedef detail::amg::amg_sparsematrix<ScalarType> SparseMatrixType;
+ typedef detail::amg::amg_pointvector PointVectorType;
+
+ typedef typename SparseMatrixType::const_iterator1 InternalConstRowIterator;
+ typedef typename SparseMatrixType::const_iterator2 InternalConstColIterator;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ boost::numeric::ublas::vector <SparseMatrixType> A_setup;
+ boost::numeric::ublas::vector <SparseMatrixType> P_setup;
+ boost::numeric::ublas::vector <MatrixType> A;
+ boost::numeric::ublas::vector <MatrixType> P;
+ boost::numeric::ublas::vector <MatrixType> R;
+ boost::numeric::ublas::vector <PointVectorType> Pointvector;
+
+ mutable boost::numeric::ublas::compressed_matrix<ScalarType> op;
+ mutable boost::numeric::ublas::permutation_matrix<ScalarType> Permutation;
+
+ mutable boost::numeric::ublas::vector <VectorType> result;
+ mutable boost::numeric::ublas::vector <VectorType> rhs;
+ mutable boost::numeric::ublas::vector <VectorType> residual;
+
+ mutable bool done_init_apply;
+
+ amg_tag _tag;
+
+ public:
+
+ amg_precond(): Permutation(0) {}
+
+ /** @brief The constructor. Builds data structures.
+ *
+ * @param mat System matrix
+ * @param tag The AMG tag
+ */
+ amg_precond(compressed_matrix<ScalarType, MAT_ALIGNMENT> const & mat, amg_tag const & tag): Permutation(0)
+ {
+ _tag = tag;
+
+ // Copy to CPU. Internal structure of sparse matrix is used for copy operation.
+ std::vector<std::map<unsigned int, ScalarType> > mat2 = std::vector<std::map<unsigned int, ScalarType> >(mat.size1());
+ viennacl::copy(mat, mat2);
+
+ // Initialize data structures.
+ amg_init (mat2,A_setup,P_setup,Pointvector,_tag);
+
+ done_init_apply = false;
+ }
+
+ /** @brief Start setup phase for this class and copy data structures.
+ */
+ void setup()
+ {
+ // Start setup phase.
+ amg_setup(A_setup,P_setup,Pointvector,_tag);
+ // Transform to GPU-Matrixtype for precondition phase.
+ amg_transform_gpu(A,P,R,A_setup,P_setup,_tag);
+
+ done_init_apply = false;
+ }
+
+ /** @brief Prepare data structures for preconditioning:
+ * Build data structures for precondition phase.
+ * Do LU factorization on coarsest level.
+ */
+ void init_apply() const
+ {
+ // Setup precondition phase (Data structures).
+ amg_setup_apply(result,rhs,residual,A_setup,_tag);
+ // Do LU factorization for direct solve.
+ amg_lu(op,Permutation,A_setup[_tag.get_coarselevels()]);
+
+ done_init_apply = true;
+ }
+
+ /** @brief Returns complexity measures
+ *
+ * @param avgstencil Average stencil sizes on all levels
+ * @return Operator complexity of AMG method
+ */
+ template <typename VectorType>
+ ScalarType calc_complexity(VectorType & avgstencil)
+ {
+ avgstencil = VectorType (_tag.get_coarselevels()+1);
+ unsigned int nonzero=0, systemmat_nonzero=0, level_coefficients=0;
+
+ for (unsigned int level=0; level < _tag.get_coarselevels()+1; ++level)
+ {
+ level_coefficients = 0;
+ for (InternalRowIterator row_iter = A_setup[level].begin1(); row_iter != A_setup[level].end1(); ++row_iter)
+ {
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (level == 0)
+ systemmat_nonzero++;
+ nonzero++;
+ level_coefficients++;
+ }
+ }
+ avgstencil[level] = level_coefficients/(double)A[level].size1();
+ }
+ return nonzero/static_cast<double>(systemmat_nonzero);
+ }
+
+ /** @brief Precondition Operation
+ *
+ * @param vec The vector to which preconditioning is applied to
+ */
+ template <typename VectorType>
+ void apply(VectorType & vec) const
+ {
+ if (!done_init_apply)
+ init_apply();
+
+ int level;
+
+ // Precondition operation (Yang, p.3).
+ rhs[0] = vec;
+ for (level=0; level <(signed)_tag.get_coarselevels(); level++)
+ {
+ result[level].clear();
+
+ // Apply Smoother _presmooth times.
+ smooth_jacobi (level, _tag.get_presmooth(), result[level], rhs[level]);
+
+ #ifdef DEBUG
+ std::cout << "After presmooth: " << std::endl;
+ printvector(result[level]);
+ #endif
+
+ // Compute residual.
+ residual[level] = rhs[level] - viennacl::linalg::prod (A[level],result[level]);
+
+ #ifdef DEBUG
+ std::cout << "Residual: " << std::endl;
+ printvector(residual[level]);
+ #endif
+
+ // Restrict to coarse level. Result is RHS of coarse level equation.
+ //residual_coarse[level] = viennacl::linalg::prod(R[level],residual[level]);
+ rhs[level+1] = viennacl::linalg::prod(R[level],residual[level]);
+
+ #ifdef DEBUG
+ std::cout << "Restricted Residual: " << std::endl;
+ printvector(rhs[level+1]);
+ #endif
+ }
+
+ // On highest level use direct solve to solve equation (on the CPU)
+ //TODO: Use GPU direct solve!
+ result[level] = rhs[level];
+ boost::numeric::ublas::vector <ScalarType> result_cpu (result[level].size());
+
+ copy (result[level],result_cpu);
+ boost::numeric::ublas::lu_substitute(op,Permutation,result_cpu);
+ copy (result_cpu, result[level]);
+
+ #ifdef DEBUG
+ std::cout << "After direct solve: " << std::endl;
+ printvector (result[level]);
+ #endif
+
+ for (level=_tag.get_coarselevels()-1; level >= 0; level--)
+ {
+ #ifdef DEBUG
+ std::cout << "Coarse Error: " << std::endl;
+ printvector(result[level+1]);
+ #endif
+
+ // Interpolate error to fine level and correct solution.
+ result[level] += viennacl::linalg::prod(P[level],result[level+1]);
+
+ #ifdef DEBUG
+ std::cout << "Corrected Result: " << std::endl;
+ printvector (result[level]);
+ #endif
+
+ // Apply Smoother _postsmooth times.
+ smooth_jacobi (level, _tag.get_postsmooth(), result[level], rhs[level]);
+
+ #ifdef DEBUG
+ std::cout << "After postsmooth: " << std::endl;
+ printvector (result[level]);
+ #endif
+ }
+ vec = result[0];
+ }
+
+ /** @brief Jacobi Smoother (GPU version)
+ * @param level Coarse level to which smoother is applied to
+ * @param iterations Number of smoother iterations
+ * @param x The vector smoothing is applied to
+ * @param rhs The right hand side of the equation for the smoother
+ */
+ template <typename VectorType>
+ void smooth_jacobi(int level, unsigned int iterations, VectorType & x, VectorType const & rhs) const
+ {
+ VectorType old_result (x.size());
+
+ //viennacl::ocl::program & p = viennacl::ocl::current_context().add_program
+ // (viennacl::tools::make_double_kernel(jacobi_kernel,viennacl::ocl::current_device().info()), "jacobi_kernel");
+ //viennacl::ocl::kernel & k = p.add_kernel("jacobi");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::compressed_matrix<ScalarType, MAT_ALIGNMENT>::program_name(),
+ "jacobi");
+
+ for (unsigned int i=0; i<iterations; ++i)
+ {
+ old_result = x;
+ x.clear();
+ viennacl::ocl::enqueue(k(A[level].handle1(), A[level].handle2(), A[level].handle(),
+ static_cast<ScalarType>(_tag.get_jacobiweight()),
+ old_result,
+ x,
+ rhs,
+ static_cast<cl_uint>(rhs.size())));
+
+ }
+ }
+
+ amg_tag & tag() { return _tag; }
+ };
+
+ }
+}
+
+
+
+#endif
+
diff --git a/viennacl/linalg/bicgstab.hpp b/viennacl/linalg/bicgstab.hpp
index f58e939..5817d34 100644
--- a/viennacl/linalg/bicgstab.hpp
+++ b/viennacl/linalg/bicgstab.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_BICGSTAB_HPP_
-#define _VIENNACL_BICGSTAB_HPP_
+#ifndef VIENNACL_BICGSTAB_HPP_
+#define VIENNACL_BICGSTAB_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file bicgstab.hpp
@brief The stabilized bi-conjugate gradient method is implemented here
@@ -25,6 +27,9 @@
#include "viennacl/tools/tools.hpp"
#include "viennacl/linalg/prod.hpp"
#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/traits/clear.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/meta/result_of.hpp"
namespace viennacl
{
@@ -79,11 +84,11 @@ namespace viennacl
template <typename MatrixType, typename VectorType>
VectorType solve(const MatrixType & matrix, VectorType const & rhs, bicgstab_tag const & tag)
{
- typedef typename viennacl::tools::result_of::value_type<VectorType>::type ScalarType;
- typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType CPU_ScalarType;
- unsigned int problem_size = viennacl::tools::traits::size(rhs);
+ typedef typename viennacl::result_of::value_type<VectorType>::type ScalarType;
+ typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type CPU_ScalarType;
+ unsigned int problem_size = viennacl::traits::size(rhs);
VectorType result(problem_size);
- viennacl::tools::traits::clear(result);
+ viennacl::traits::clear(result);
VectorType residual = rhs;
VectorType p = rhs;
@@ -112,14 +117,6 @@ namespace viennacl
s = residual;
s -= alpha*tmp0;
- //std::cout << "alpha: " << alpha << std::endl;
- /*std::cout << "s[0]: " << s[0] << std::endl;
- std::cout << "s[end]: " << s[s.size()-1] << std::endl;
- for (long k=0; k<10; ++k)
- std::cout << s[k] << std::endl;
- exit(0);*/
-
-
tmp1 = viennacl::linalg::prod(matrix, s);
//omega = viennacl::linalg::inner_prod(tmp1, s) / viennacl::linalg::inner_prod(tmp1, tmp1);
inner_prod_temp = viennacl::linalg::inner_prod(tmp1, s);
@@ -136,7 +133,7 @@ namespace viennacl
residual -= omega*tmp1;
new_ip_rr0star = viennacl::linalg::inner_prod(residual,r0star);
- if (std::fabs( viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host) < tag.tolerance() * tag.tolerance())
+ if (fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual)) / norm_rhs_host) < tag.tolerance() * tag.tolerance())
break;
//beta = new_ip_rr0star / ip_rr0star * alpha/omega;
@@ -144,14 +141,16 @@ namespace viennacl
beta = cpu_temp / ip_rr0star * alpha/omega;
ip_rr0star = cpu_temp;
- //p = residual + beta * (p - omega*tmp0);
+ // Execution of
+ // p = residual + beta * (p - omega*tmp0);
+ // without introducing temporary vectors:
p -= omega * tmp0;
p *= beta;
p += residual;
}
//store last error estimate:
- tag.error(std::sqrt(std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)));
+ tag.error(std::sqrt(fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual)) / norm_rhs_host)));
return result;
}
@@ -175,9 +174,9 @@ namespace viennacl
template <typename MatrixType, typename VectorType, typename PreconditionerType>
VectorType solve(const MatrixType & matrix, VectorType const & rhs, bicgstab_tag const & tag, PreconditionerType const & precond)
{
- typedef typename viennacl::tools::result_of::value_type<VectorType>::type ScalarType;
- typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType CPU_ScalarType;
- unsigned int problem_size = viennacl::tools::traits::size(rhs);
+ typedef typename viennacl::result_of::value_type<VectorType>::type ScalarType;
+ typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type CPU_ScalarType;
+ unsigned int problem_size = viennacl::traits::size(rhs);
VectorType result(problem_size);
result.clear();
@@ -227,7 +226,7 @@ namespace viennacl
residual -= omega*tmp1;
new_ip_rr0star = viennacl::linalg::inner_prod(residual,r0star);
- if (std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host) < tag.tolerance() * tag.tolerance() )
+ if (fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)) < tag.tolerance() * tag.tolerance() )
break;
//beta = new_ip_rr0star / ip_rr0star * alpha/omega;
@@ -235,15 +234,18 @@ namespace viennacl
beta = cpu_temp / ip_rr0star * alpha/omega;
ip_rr0star = cpu_temp;
- //p = residual + beta * (p - omega*tmp0);
+ // Execution of
+ // p = residual + beta * (p - omega*tmp0);
+ // without introducing temporary vectors:
p -= omega * tmp0;
- //p = residual + beta * p;
p *= beta;
p += residual;
+
+ //std::cout << "Rel. Residual in current step: " << std::sqrt(std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)) << std::endl;
}
//store last error estimate:
- tag.error(std::sqrt(std::fabs(viennacl::linalg::inner_prod(residual, residual) / norm_rhs_host)));
+ tag.error(std::sqrt(fabs(CPU_ScalarType(viennacl::linalg::inner_prod(residual, residual)) / norm_rhs_host)));
return result;
}
diff --git a/viennacl/linalg/cg.hpp b/viennacl/linalg/cg.hpp
index 44f2d48..11be052 100644
--- a/viennacl/linalg/cg.hpp
+++ b/viennacl/linalg/cg.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_CG_HPP_
-#define _VIENNACL_CG_HPP_
+#ifndef VIENNACL_CG_HPP_
+#define VIENNACL_CG_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file cg.hpp
@brief The conjugate gradient method is implemented here
@@ -27,6 +29,9 @@
#include "viennacl/linalg/ilu.hpp"
#include "viennacl/linalg/prod.hpp"
#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/traits/clear.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/meta/result_of.hpp"
namespace viennacl
{
@@ -83,12 +88,12 @@ namespace viennacl
VectorType solve(const MatrixType & matrix, VectorType const & rhs, cg_tag const & tag)
{
//typedef typename VectorType::value_type ScalarType;
- typedef typename viennacl::tools::result_of::value_type<VectorType>::type ScalarType;
- typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType CPU_ScalarType;
-
- unsigned int problem_size = viennacl::tools::traits::size(rhs);
+ typedef typename viennacl::result_of::value_type<VectorType>::type ScalarType;
+ typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type CPU_ScalarType;
+ //std::cout << "Starting CG" << std::endl;
+ std::size_t problem_size = viennacl::traits::size(rhs);
VectorType result(problem_size);
- viennacl::tools::traits::clear(result);
+ viennacl::traits::clear(result);
VectorType residual = rhs;
VectorType p = rhs;
@@ -102,7 +107,7 @@ namespace viennacl
CPU_ScalarType beta;
CPU_ScalarType norm_rhs_squared = ip_rr;
- //std::cout << "Starting CG solver... " << std::endl;
+ //std::cout << "Starting CG solver iterations... " << std::endl;
for (unsigned int i = 0; i < tag.max_iterations(); ++i)
{
@@ -154,9 +159,9 @@ namespace viennacl
template <typename MatrixType, typename VectorType, typename PreconditionerType>
VectorType solve(const MatrixType & matrix, VectorType const & rhs, cg_tag const & tag, PreconditionerType const & precond)
{
- typedef typename VectorType::value_type ScalarType;
- typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType CPU_ScalarType;
- unsigned int problem_size = viennacl::tools::traits::size(rhs);
+ typedef typename viennacl::result_of::value_type<VectorType>::type ScalarType;
+ typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type CPU_ScalarType;
+ unsigned int problem_size = viennacl::traits::size(rhs);
VectorType result(problem_size);
result.clear();
diff --git a/viennacl/linalg/circulant_matrix_operations.hpp b/viennacl/linalg/circulant_matrix_operations.hpp
new file mode 100644
index 0000000..d16d040
--- /dev/null
+++ b/viennacl/linalg/circulant_matrix_operations.hpp
@@ -0,0 +1,218 @@
+#ifndef VIENNACL_LINALG_CIRCULANT_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_CIRCULANT_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file circulant_matrix_operations.hpp
+ @brief Implementations of operations using circulant_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+//#include "viennacl/linalg/kernels/coordinate_matrix_kernels.h"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ vector_expression<const circulant_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod > prod_impl(const circulant_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+ {
+ return vector_expression<const circulant_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod >(mat, vec);
+ }
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a circulant_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ viennacl::vector_expression<const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod > prod_impl(const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ size_t NUM_THREADS)
+ {
+ return viennacl::vector_expression<const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod >(mat, vec);
+ }
+
+ /** @brief Carries out matrix-vector multiplication with a circulant_matrix
+ *
+ * Implementation of the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param result The result vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(const viennacl::circulant_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+ {
+ assert(mat.size1() == result.size());
+ assert(mat.size2() == vec.size());
+ //result.clear();
+
+ //std::cout << "prod(circulant_matrix" << ALIGNMENT << ", vector) called with internal_nnz=" << mat.internal_nnz() << std::endl;
+
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> circ(mat.elements().size() * 2);
+ viennacl::detail::fft::real_to_complex(mat.elements(), circ, mat.elements().size());
+
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 2);
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 2);
+
+ viennacl::detail::fft::real_to_complex(vec, tmp, vec.size());
+ viennacl::linalg::convolve(circ, tmp, tmp2);
+ viennacl::detail::fft::complex_to_real(tmp2, result, vec.size());
+
+ }
+
+ } //namespace linalg
+
+
+
+ /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+ viennacl::op_prod> & proxy)
+ {
+ // check for the special case x = A * x
+ if (proxy.rhs().handle() == this->handle())
+ {
+ viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this = result;
+ return *this;
+ }
+ else
+ {
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+ return *this;
+ }
+ return *this;
+ }
+
+ //v += A * x
+ /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this += result;
+ return *this;
+ }
+
+ /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this -= result;
+ return *this;
+ }
+
+
+ //free functions:
+ /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result += *this;
+ return result;
+ }
+
+ /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result = *this - result;
+ return result;
+ }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/compressed_matrix_operations.hpp b/viennacl/linalg/compressed_matrix_operations.hpp
index c5d4fd1..ada8472 100644
--- a/viennacl/linalg/compressed_matrix_operations.hpp
+++ b/viennacl/linalg/compressed_matrix_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_OPERATIONS_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file compressed_matrix_operations.hpp
@brief Implementations of operations using compressed_matrix
@@ -71,7 +73,7 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::compressed_matrix<TYPE, ALIGNMENT>::program_name(), "vec_mul");
- viennacl::ocl::enqueue(k(mat.handle1(), mat.handle2(), mat.handle(), vec, result, mat.size1()));
+ viennacl::ocl::enqueue(k(mat.handle1(), mat.handle2(), mat.handle(), vec, result, static_cast<cl_uint>(mat.size1())));
}
/** @brief Inplace solution of a lower triangular compressed_matrix with unit diagonal. Typically used for LU substitutions
diff --git a/viennacl/linalg/coordinate_matrix_operations.hpp b/viennacl/linalg/coordinate_matrix_operations.hpp
index 9e7dcb9..ff5f8ac 100644
--- a/viennacl/linalg/coordinate_matrix_operations.hpp
+++ b/viennacl/linalg/coordinate_matrix_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
+#ifndef VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_COORDINATE_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file coordinate_matrix_operations.hpp
@brief Implementations of operations using coordinate_matrix
diff --git a/viennacl/linalg/detail/amg/amg_base.hpp b/viennacl/linalg/detail/amg/amg_base.hpp
new file mode 100644
index 0000000..9e58137
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_base.hpp
@@ -0,0 +1,1501 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_BASE_HPP_
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_BASE_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_base.hpp
+ @brief Helper classes and functions for the AMG preconditioner. Experimental.
+
+ AMG code contributed by Markus Wagner
+*/
+
+#include <boost/numeric/ublas/vector.hpp>
+#include <cmath>
+#include <set>
+#include <list>
+#include <algorithm>
+
+#include <map>
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#include "amg_debug.hpp"
+
+#define VIENNACL_AMG_COARSE_RS 1
+#define VIENNACL_AMG_COARSE_ONEPASS 2
+#define VIENNACL_AMG_COARSE_RS0 3
+#define VIENNACL_AMG_COARSE_RS3 4
+#define VIENNACL_AMG_COARSE_AG 5
+#define VIENNACL_AMG_INTERPOL_DIRECT 1
+#define VIENNACL_AMG_INTERPOL_CLASSIC 2
+#define VIENNACL_AMG_INTERPOL_AG 3
+#define VIENNACL_AMG_INTERPOL_SA 4
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace amg
+ {
+ /** @brief A tag for algebraic multigrid (AMG). Used to transport information from the user to the implementation.
+ */
+ class amg_tag
+ {
+ public:
+ /** @brief The constructor.
+ * @param coarse Coarsening Routine (Default: VIENNACL_AMG_COARSE_CLASSIC)
+ * @param interpol Interpolation routine (Default: VIENNACL_AMG_INTERPOL_DIRECT)
+ * @param threshold Strength of dependence threshold for the coarsening process (Default: 0.25)
+ * @param interpolweight Interpolation parameter for SA interpolation and truncation parameter for direct+classical interpolation
+ * @param jacobiweight Weight of the weighted Jacobi smoother iteration step (Default: 1 = Regular Jacobi smoother)
+ * @param presmooth Number of presmoothing operations on every level (Default: 1)
+ * @param postsmooth Number of postsmoothing operations on every level (Default: 1)
+ * @param coarselevels Number of coarse levels that are constructed
+ * (Default: 0 = Optimize coarse levels for direct solver such that coarsest level has a maximum of COARSE_LIMIT points)
+ * (Note: Coarsening stops when number of coarse points = 0 and overwrites the parameter with actual number of coarse levels)
+ */
+ amg_tag(unsigned int coarse = 1,
+ unsigned int interpol = 1,
+ double threshold = 0.25,
+ double interpolweight = 0.2,
+ double jacobiweight = 1,
+ unsigned int presmooth = 1,
+ unsigned int postsmooth = 1,
+ unsigned int coarselevels = 0)
+ : _coarse(coarse), _interpol(interpol),
+ _threshold(threshold), _interpolweight(interpolweight), _jacobiweight(jacobiweight),
+ _presmooth(presmooth), _postsmooth(postsmooth), _coarselevels(coarselevels) {};
+
+ // Getter-/Setter-Functions
+ void set_coarse(unsigned int coarse) { if (coarse > 0) _coarse = coarse; }
+ unsigned int get_coarse() const { return _coarse; }
+
+ void set_interpol(unsigned int interpol) { if (interpol > 0) _interpol = interpol; }
+ unsigned int get_interpol() const { return _interpol; }
+
+ void set_threshold(double threshold) { if (threshold > 0 && threshold <= 1) _threshold = threshold; }
+ double get_threshold() const{ return _threshold; }
+
+ void set_as(double jacobiweight) { if (jacobiweight > 0 && jacobiweight <= 2) _jacobiweight = jacobiweight; }
+ double get_interpolweight() const { return _interpolweight; }
+
+ void set_interpolweight(double interpolweight) { if (interpolweight > 0 && interpolweight <= 2) _interpolweight = interpolweight; }
+ double get_jacobiweight() const { return _jacobiweight; }
+
+ void set_presmooth(int presmooth) { if (presmooth >= 0) _presmooth = presmooth; }
+ unsigned int get_presmooth() const { return _presmooth; }
+
+ void set_postsmooth(int postsmooth) { if (postsmooth >= 0) _postsmooth = postsmooth; }
+ unsigned int get_postsmooth() const { return _postsmooth; }
+
+ void set_coarselevels(int coarselevels) { if (coarselevels >= 0) _coarselevels = coarselevels; }
+ unsigned int get_coarselevels() const { return _coarselevels; }
+
+ private:
+ unsigned int _coarse, _interpol;
+ double _threshold, _interpolweight, _jacobiweight;
+ unsigned int _presmooth, _postsmooth, _coarselevels;
+ };
+
+ /** @brief A class for a scalar that can be written to the sparse matrix or sparse vector datatypes.
+ * @brief Values are only written to those datatypes if non-zero to optimize memory usage and performance.
+ * @brief Needed for the []- and ()-operators.
+ */
+ template <typename InternalType, typename IteratorType, typename ScalarType>
+ class amg_nonzero_scalar
+ {
+ private:
+ InternalType *_m;
+ IteratorType _iter;
+ unsigned int _i,_j;
+ ScalarType _s;
+
+ public:
+ amg_nonzero_scalar();
+
+ /** @brief The constructor.
+ * @param m Pointer to the sparse vector/matrix the scalar will be written to
+ * @param iter Iterator pointing to the respective element in the vector/matrix if available
+ * @param i Row index scalar will be written to
+ * @param j Col index scalar will be written to
+ * @param s Value of the scalar (usually used as dummy here as it will be set by the assignment operator)
+ */
+ amg_nonzero_scalar(InternalType *m,
+ IteratorType & iter,
+ unsigned int i,
+ unsigned int j,
+ ScalarType s = 0): _m(m), _iter(iter), _i(i), _j(j), _s(s) {}
+
+ /** @brief Assignment operator. Writes value into matrix at the given position.
+ * @param value Value that will be written
+ */
+ ScalarType operator = (const ScalarType value)
+ {
+ _s = value;
+ // Only write if scalar is nonzero
+ if (_s == 0) return _s;
+ // Write to _m using iterator _iter or indices (_i,_j)
+ _m->addscalar (_iter,_i,_j,_s);
+ return _s;
+ }
+
+ /** @brief Addition operator. Adds a constant.
+ * @param value Value that will be written
+ */
+ ScalarType operator += (const ScalarType value)
+ {
+ // If zero is added, then no change necessary
+ if (value == 0)
+ return _s;
+
+ _s += value;
+ // Remove entry if resulting scalar is zero
+ if (_s == 0)
+ {
+ _m->removescalar(_iter,_i);
+ return _s;
+ }
+ //Write to _m using iterator _iter or indices (_i,_j)
+ _m->addscalar (_iter,_i,_j,_s);
+ return _s;
+ }
+ ScalarType operator ++ (int)
+ {
+ _s++;
+ if (_s == 0)
+ _m->removescalar(_iter,_i);
+ _m->addscalar (_iter,_i,_j,_s);
+ return _s;
+ }
+ ScalarType operator ++ ()
+ {
+ _s++;
+ if (_s == 0)
+ _m->removescalar(_iter,_i);
+ _m->addscalar (_iter,_i,_j,_s);
+ return _s;
+ }
+ operator ScalarType (void) { return _s; }
+ };
+
+ /** @brief Defines an iterator for the sparse vector type.
+ */
+ template <typename InternalType>
+ class amg_sparsevector_iterator
+ {
+ private:
+ typedef amg_sparsevector_iterator<InternalType> self_type;
+ typedef typename InternalType::mapped_type ScalarType;
+
+ InternalType & internal_vec;
+ typename InternalType::iterator iter;
+
+ public:
+
+ /** @brief The constructor.
+ * @param vec Internal sparse vector
+ * @param begin Whether the iterator starts at the beginning or end of vec
+ */
+ amg_sparsevector_iterator(InternalType & vec, bool begin=true): internal_vec(vec)
+ {
+ if (begin)
+ iter = internal_vec.begin();
+ else
+ iter = internal_vec.end();
+ }
+
+ bool operator == (self_type other)
+ {
+ if (iter == other.iter)
+ return true;
+ else
+ return false;
+ }
+ bool operator != (self_type other)
+ {
+ if (iter != other.iter)
+ return true;
+ else
+ return false;
+ }
+
+ self_type & operator ++ () const { iter++; return *this; }
+ self_type & operator ++ () { iter++; return *this; }
+ self_type & operator -- () const { iter--; return *this; }
+ self_type & operator -- () { iter--; return *this; }
+ ScalarType & operator * () const { return (*iter).second; }
+ ScalarType & operator * () { return (*iter).second; }
+ unsigned int index() const { return (*iter).first; }
+ unsigned int index() { return (*iter).first; }
+ };
+
+ /** @brief A class for the sparse vector type.
+ */
+ template <typename ScalarType>
+ class amg_sparsevector
+ {
+ public:
+ typedef ScalarType value_type;
+
+ private:
+ // A map is used internally which saves all non-zero elements with pairs of (index,value)
+ typedef std::map<unsigned int,ScalarType> InternalType;
+ typedef amg_sparsevector<ScalarType> self_type;
+ typedef amg_nonzero_scalar<self_type,typename InternalType::iterator,ScalarType> NonzeroScalarType;
+
+ // Size is only a dummy variable. Not needed for internal map structure but for compatible vector interface.
+ unsigned int _size;
+ InternalType internal_vector;
+
+ public:
+ typedef amg_sparsevector_iterator<InternalType> iterator;
+ typedef typename InternalType::const_iterator const_iterator;
+
+ public:
+ /** @brief The constructor.
+ * @param size Size of the vector
+ */
+ amg_sparsevector(unsigned int size = 0): _size(size)
+ {
+ internal_vector = InternalType();
+ }
+
+ void resize(unsigned int size) { _size = size; }
+ unsigned int size() const { return _size;}
+
+ // Returns number of non-zero entries in vector equal to the size of the underlying map.
+ unsigned int internal_size() const { return internal_vector.size(); }
+ // Delete underlying map.
+ void clear() { internal_vector.clear(); }
+ // Remove entry at position i.
+ void remove(unsigned int i) { internal_vector.erase(i); }
+
+ // Add s to the entry at position i
+ void add (unsigned int i, ScalarType s)
+ {
+ typename InternalType::iterator iter = internal_vector.find(i);
+ // If there is no entry at position i, add new entry at that position
+ if (iter == internal_vector.end())
+ addscalar(iter,i,i,s);
+ else
+ {
+ s += (*iter).second;
+ // If new value is zero, then erase the entry, otherwise write new value
+ if (s != 0)
+ (*iter).second = s;
+ else
+ internal_vector.erase(iter);
+ }
+ }
+
+ // Write to the map. Is called from non-zero scalar type.
+ template <typename IteratorType>
+ void addscalar(IteratorType & iter, unsigned int i, unsigned int j, ScalarType s)
+ {
+ // Don't write if value is zero
+ if (s == 0)
+ return;
+
+ // If entry is already present, overwrite value, otherwise make new entry
+ if (iter != internal_vector.end())
+ (*iter).second = s;
+ else
+ internal_vector[i] = s;
+ }
+
+ // Remove value from the map. Is called from non-zero scalar type.
+ template <typename IteratorType>
+ void removescalar(IteratorType & iter, unsigned int i) { internal_vector.erase(iter); }
+
+ // Bracket operator. Returns non-zero scalar type with actual values of the respective entry which calls addscalar/removescalar after value is altered.
+ NonzeroScalarType operator [] (unsigned int i)
+ {
+ typename InternalType::iterator it = internal_vector.find(i);
+ // If value is already present then build non-zero scalar with actual value, otherwise 0.
+ if (it != internal_vector.end())
+ return NonzeroScalarType (this,it,i,i,(*it).second);
+ else
+ return NonzeroScalarType (this,it,i,i,0);
+ }
+
+ // Use internal data structure directly for read-only access. No need to use non-zero scalar as no write access possible.
+ ScalarType operator [] (unsigned int i) const
+ {
+ const_iterator it = internal_vector.find(i);
+
+ if (it != internal_vector.end())
+ return (*it).second;
+ else
+ return 0;
+ }
+
+ // Iterator functions.
+ iterator begin() { return iterator(internal_vector); }
+ const_iterator begin() const { return internal_vector.begin(); }
+ iterator end() { return iterator(internal_vector,false); }
+ const_iterator end() const { return internal_vector.end(); }
+
+ // checks whether value at index i is nonzero. More efficient than doing [] == 0.
+ bool isnonzero(unsigned int i) const { return internal_vector.find(i) != internal_vector.end(); }
+
+ // Copies data into a ublas vector type.
+ operator boost::numeric::ublas::vector<ScalarType> (void)
+ {
+ boost::numeric::ublas::vector<ScalarType> vec (_size);
+ for (iterator iter = begin(); iter != end(); ++iter)
+ vec [iter.index()] = *iter;
+ return vec;
+ }
+ };
+
+ /** @brief A class for the sparse matrix type.
+ * Uses vector of maps as data structure for higher performance and lower memory usage.
+ * Uses similar interface as ublas::compressed_matrix.
+ * Can deal with transposed of matrix internally: Creation, Storage, Iterators, etc.
+ */
+ template <typename ScalarType>
+ class amg_sparsematrix
+ {
+ public:
+ typedef ScalarType value_type;
+ private:
+ typedef std::map<unsigned int,ScalarType> RowType;
+ typedef std::vector<RowType> InternalType;
+ typedef amg_sparsematrix<ScalarType> self_type;
+
+ // Adapter is used for certain functionality, especially iterators.
+ typedef typename viennacl::tools::sparse_matrix_adapter<ScalarType> AdapterType;
+ typedef typename viennacl::tools::const_sparse_matrix_adapter<ScalarType> ConstAdapterType;
+
+ // Non-zero scalar is used to write to the matrix.
+ typedef amg_nonzero_scalar<self_type,typename RowType::iterator,ScalarType> NonzeroScalarType;
+
+ // Holds matrix coefficients.
+ InternalType internal_mat;
+ // Holds matrix coefficient of transposed matrix if built.
+ // Note: Only internal_mat is written using operators and methods while internal_mat_trans is built from internal_mat using do_trans().
+ InternalType internal_mat_trans;
+ // Saves sizes.
+ size_t s1, s2;
+
+ // True if the transposed of the matrix is used (for calculations, iteration, etc.).
+ bool transposed_mode;
+ // True if the transposed is already built (saved in internal_mat_trans) and also up to date (no changes to internal_mat).
+ bool transposed;
+
+ public:
+ typedef typename AdapterType::iterator1 iterator1;
+ typedef typename AdapterType::iterator2 iterator2;
+ typedef typename ConstAdapterType::const_iterator1 const_iterator1;
+ typedef typename ConstAdapterType::const_iterator2 const_iterator2;
+
+ /** @brief Standard constructor. */
+ amg_sparsematrix ()
+ {
+ transposed_mode = false;
+ transposed = false;
+ }
+
+ /** @brief Constructor. Builds matrix of size (i,j).
+ * @param i Size of first dimension
+ * @param j Size of second dimension
+ */
+ amg_sparsematrix (unsigned int i, unsigned int j)
+ {
+ AdapterType a (internal_mat);
+ a.resize (i,j,false);
+ AdapterType a_trans (internal_mat_trans);
+ a_trans.resize (j,i,false);
+ s1 = i;
+ s2 = j;
+ a.clear();
+ a_trans.clear();
+ transposed_mode = false;
+ transposed = false;
+ }
+
+ /** @brief Constructor. Builds matrix via std::vector<std::map> by copying memory
+ * (Only necessary feature of this other matrix type is to have const iterators)
+ * @param mat Vector of maps
+ */
+ amg_sparsematrix (std::vector<std::map<unsigned int, ScalarType> > const & mat)
+ {
+ AdapterType a (internal_mat);
+ AdapterType a_trans (internal_mat_trans);
+ a.resize(mat.size(), mat.size());
+ a_trans.resize(mat.size(), mat.size());
+
+ internal_mat = mat;
+ s1 = s2 = mat.size();
+
+ transposed_mode = false;
+ transposed = false;
+ }
+
+ /** @brief Constructor. Builds matrix via another matrix type.
+ * (Only necessary feature of this other matrix type is to have const iterators)
+ * @param mat Matrix
+ */
+ template <typename MatrixType>
+ amg_sparsematrix (MatrixType const & mat)
+ {
+ AdapterType a (internal_mat);
+ AdapterType a_trans (internal_mat_trans);
+ a.resize(mat.size1(), mat.size2());
+ a_trans.resize (mat.size2(), mat.size1());
+ s1 = mat.size1();
+ s2 = mat.size2();
+ a.clear();
+ a_trans.clear();
+
+ for (typename MatrixType::const_iterator1 row_iter = mat.begin1(); row_iter != mat.end1(); ++row_iter)
+ {
+ for (typename MatrixType::const_iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (*col_iter != 0)
+ {
+ unsigned int x = col_iter.index1();
+ unsigned int y = col_iter.index2();
+ a (x,y) = *col_iter;
+ a_trans (y,x) = *col_iter;
+ }
+ }
+ }
+ transposed_mode = false;
+ transposed = true;
+ }
+
+ // Build transposed of the current matrix.
+ void do_trans()
+ {
+ // Do it only once if called in a parallel section
+ #ifdef _OPENMP
+ #pragma omp critical
+ #endif
+ {
+ // Only build transposed if it is not built or not up to date
+ if (!transposed)
+ {
+ // Mode has to be set to standard mode temporarily
+ bool save_mode = transposed_mode;
+ transposed_mode = false;
+
+ for (iterator1 row_iter = begin1(); row_iter != end1(); ++row_iter)
+ for (iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ internal_mat_trans[col_iter.index2()][col_iter.index1()] = *col_iter;
+
+ transposed_mode = save_mode;
+ transposed = true;
+ }
+ }
+ } //do_trans()
+
+ // Set transposed mode (true=transposed, false=regular)
+ void set_trans(bool mode)
+ {
+ transposed_mode = mode;
+ if (mode)
+ do_trans();
+ }
+
+ bool get_trans() const { return transposed_mode; }
+
+ // Checks whether coefficient (i,j) is non-zero. More efficient than using (i,j) == 0.
+ bool isnonzero (unsigned int i, unsigned int j) const
+ {
+ if (!transposed_mode)
+ {
+ if (internal_mat[i].find(j) != internal_mat[i].end())
+ return true;
+ else
+ return false;
+ }
+ else
+ {
+ if (internal_mat[j].find(i) != internal_mat[j].end())
+ return true;
+ else
+ return false;
+ }
+ } //isnonzero()
+
+ // Add s to value at (i,j)
+ void add (unsigned int i, unsigned int j, ScalarType s)
+ {
+ // If zero is added then do nothing.
+ if (s == 0)
+ return;
+
+ typename RowType::iterator col_iter = internal_mat[i].find(j);
+ // If there is no entry at position (i,j), then make new entry.
+ if (col_iter == internal_mat[i].end())
+ addscalar(col_iter,i,j,s);
+ else
+ {
+ s += (*col_iter).second;
+ // Update value and erase entry if value is zero.
+ if (s != 0)
+ (*col_iter).second = s;
+ else
+ internal_mat[i].erase(col_iter);
+ }
+ transposed = false;
+ } //add()
+
+ // Write to the internal data structure. Is called from non-zero scalar type.
+ template <typename IteratorType>
+ void addscalar(IteratorType & iter, unsigned int i, unsigned int j, ScalarType s)
+ {
+ // Don't write if value is zero
+ if (s == 0)
+ return;
+
+ if (iter != internal_mat[i].end())
+ (*iter).second = s;
+ else
+ internal_mat[i][j] = s;
+
+ transposed = false;
+ }
+
+ // Remove entry from internal data structure. Is called from non-zero scalar type.
+ template <typename IteratorType>
+ void removescalar(IteratorType & iter, unsigned int i)
+ {
+ internal_mat[i].erase(iter);
+ transposed = false;
+ }
+
+ // Return non-zero scalar at position (i,j). Value is written to the non-zero scalar and updated via addscalar()/removescalar().
+ NonzeroScalarType operator()(unsigned int i, unsigned int j)
+ {
+ typename RowType::iterator iter;
+
+ if (!transposed_mode)
+ {
+ iter = internal_mat[i].find(j);
+ if (iter != internal_mat[i].end())
+ return NonzeroScalarType (this,iter,i,j,(*iter).second);
+ else
+ return NonzeroScalarType (this,iter,i,j,0);
+ }
+ else
+ {
+ iter = internal_mat[j].find(i);
+ if (iter != internal_mat[j].end())
+ return NonzeroScalarType (this,iter,j,i,(*iter).second);
+ else
+ return NonzeroScalarType (this,iter,j,i,0);
+ }
+ }
+
+ // For read-only access return the actual value directly. Non-zero datatype not needed as no write access possible.
+ ScalarType operator()(unsigned int i, unsigned int j) const
+ {
+ typename RowType::const_iterator iter;
+
+ if (!transposed_mode)
+ {
+ iter = internal_mat[i].find(j);
+ if (iter != internal_mat[i].end())
+ return (*iter).second;
+ else
+ return 0;
+ }
+ else
+ {
+ iter = internal_mat[j].find(i);
+ if (iter != internal_mat[j].end())
+ return (*iter).second;
+ else
+ return 0;
+ }
+ }
+
+ void resize(unsigned int i, unsigned int j, bool preserve = true)
+ {
+ AdapterType a (internal_mat);
+ a.resize(i,j,preserve);
+ AdapterType a_trans (internal_mat_trans);
+ a_trans.resize(j,i,preserve);
+ s1 = i;
+ s2 = j;
+ }
+
+ void clear()
+ {
+ AdapterType a (internal_mat);
+ a.clear();
+ AdapterType a_trans (internal_mat_trans);
+ a_trans.clear();
+ transposed = true;
+ }
+
+ size_t size1()
+ {
+ if (!transposed_mode)
+ return s1;
+ else
+ return s2;
+ }
+
+ size_t size1() const
+ {
+ if (!transposed_mode)
+ return s1;
+ else
+ return s2;
+ }
+
+
+ size_t size2()
+ {
+ if (!transposed_mode)
+ return s2;
+ else
+ return s1;
+ }
+ size_t size2() const
+ {
+ if (!transposed_mode)
+ return s2;
+ else
+ return s1;
+ }
+
+ iterator1 begin1(bool trans = false)
+ {
+ if (!trans && !transposed_mode)
+ {
+ AdapterType a (internal_mat);
+ return a.begin1();
+ }
+ else
+ {
+ do_trans();
+ AdapterType a_trans (internal_mat_trans);
+ return a_trans.begin1();
+ }
+ }
+
+ iterator1 end1(bool trans = false)
+ {
+ if (!trans && !transposed_mode)
+ {
+ AdapterType a (internal_mat);
+ return a.end1();
+ }
+ else
+ {
+ //do_trans();
+ AdapterType a_trans (internal_mat_trans);
+ return a_trans.end1();
+ }
+ }
+
+ iterator2 begin2(bool trans = false)
+ {
+ if (!trans && !transposed_mode)
+ {
+ AdapterType a (internal_mat);
+ return a.begin2();
+ }
+ else
+ {
+ do_trans();
+ AdapterType a_trans (internal_mat_trans);
+ return a_trans.begin2();
+ }
+ }
+
+ iterator2 end2(bool trans = false)
+ {
+ if (!trans && !transposed_mode)
+ {
+ AdapterType a (internal_mat);
+ return a.end2();
+ }
+ else
+ {
+ //do_trans();
+ AdapterType a_trans (internal_mat_trans);
+ return a_trans.end2();
+ }
+ }
+
+ const_iterator1 begin1() const
+ {
+ // Const_iterator of transposed can only be used if transposed matrix is already built and up to date.
+ assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+ ConstAdapterType a_const (internal_mat);
+ return a_const.begin1();
+ }
+
+ const_iterator1 end1(bool trans = false) const
+ {
+ assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+ ConstAdapterType a_const (internal_mat);
+ return a_const.end1();
+ }
+
+ const_iterator2 begin2(bool trans = false) const
+ {
+ assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+ ConstAdapterType a_const (internal_mat);
+ return a_const.begin2();
+ }
+
+ const_iterator2 end2(bool trans = false) const
+ {
+ assert((!transposed_mode || (transposed_mode && transposed)) && "Error: Cannot build const_iterator when transposed has not been built yet!");
+ ConstAdapterType a_const (internal_mat);
+ return a_const.end2();
+ }
+
+ // Returns pointer to the internal data structure. Improves performance of copy operation to GPU.
+ std::vector<std::map<unsigned int, ScalarType> > * get_internal_pointer()
+ {
+ if (!transposed_mode)
+ return &internal_mat;
+
+ if (!transposed)
+ do_trans();
+ return &internal_mat_trans;
+ }
+ operator boost::numeric::ublas::compressed_matrix<ScalarType> (void)
+ {
+ boost::numeric::ublas::compressed_matrix<ScalarType> mat;
+ mat.resize(size1(),size2(),false);
+ mat.clear();
+
+ for (iterator1 row_iter = begin1(); row_iter != end1(); ++row_iter)
+ for (iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ mat (col_iter.index1(), col_iter.index2()) = *col_iter;
+
+ return mat;
+ }
+ operator boost::numeric::ublas::matrix<ScalarType> (void)
+ {
+ boost::numeric::ublas::matrix<ScalarType> mat;
+ mat.resize(size1(),size2(),false);
+ mat.clear();
+
+ for (iterator1 row_iter = begin1(); row_iter != end1(); ++row_iter)
+ for (iterator2 col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ mat (col_iter.index1(), col_iter.index2()) = *col_iter;
+
+ return mat;
+ }
+ };
+
+ /** @brief A class for the AMG points.
+ * Saves point index and influence measure
+ * Holds information whether point is undecided, C or F point.
+ * Holds lists of points that are influenced by or influencing this point
+ */
+ class amg_point
+ {
+ private:
+ typedef amg_sparsevector<amg_point*> ListType;
+
+ unsigned int _index;
+ unsigned int _influence;
+ // Determines whether point is undecided.
+ bool _undecided;
+ // Determines wheter point is C point (true) or F point (false).
+ bool _cpoint;
+ unsigned int _coarse_index;
+ // Index offset of parallel coarsening. In that case a point acts as if it had an index of _index-_offset and treats other points as if they had an index of index+_offset
+ unsigned int _offset;
+ // Aggregate the point belongs to.
+ unsigned int _aggregate;
+
+ // Holds all points influencing this point.
+ ListType influencing_points;
+ // Holds all points that are influenced by this point.
+ ListType influenced_points;
+
+ public:
+ typedef ListType::iterator iterator;
+ typedef ListType::const_iterator const_iterator;
+
+ /** @brief The constructor.
+ */
+ amg_point (unsigned int index, unsigned int size): _index(index), _influence(0), _undecided(true), _cpoint(false), _coarse_index(0), _offset(0), _aggregate(0)
+ {
+ influencing_points = ListType(size);
+ influenced_points = ListType(size);
+ }
+
+ void set_offset(unsigned int offset) { _offset = offset; }
+ unsigned int get_offset() { return _offset; }
+ void set_index(unsigned int index) { _index = index+_offset; }
+ unsigned int get_index() const { return _index-_offset; }
+ unsigned int get_influence() const { return _influence; }
+ void set_aggregate(unsigned int aggregate) { _aggregate = aggregate; }
+ unsigned int get_aggregate () { return _aggregate; }
+
+ bool is_cpoint() const { return _cpoint && !_undecided; }
+ bool is_fpoint() const { return !_cpoint && !_undecided; }
+ bool is_undecided() const { return _undecided; }
+
+ // Returns number of influencing points
+ unsigned int number_influencing() const { return influencing_points.internal_size(); }
+ // Returns true if *point is influencing this point
+ bool is_influencing(amg_point* point) const { return influencing_points.isnonzero(point->get_index()+_offset); }
+ // Add *point to influencing points
+ void add_influencing_point(amg_point* point) { influencing_points[point->get_index()+_offset] = point; }
+ // Add *point to influenced points
+ void add_influenced_point(amg_point* point) { influenced_points[point->get_index()+_offset] = point; }
+
+ // Clear influencing points
+ void clear_influencing() { influencing_points.clear(); }
+ // Clear influenced points
+ void clear_influenced() {influenced_points.clear(); }
+
+
+ unsigned int get_coarse_index() const { return _coarse_index; }
+ void set_coarse_index(unsigned int index) { _coarse_index = index; }
+
+ // Calculates the initial influence measure equal to the number of influenced points.
+ void calc_influence() { _influence = influenced_points.internal_size(); }
+
+ // Add to influence measure.
+ unsigned int add_influence(int add)
+ {
+ _influence += add;
+ return _influence;
+ }
+ // Make this point C point. Only call via amg_pointvector.
+ void make_cpoint()
+ {
+ _undecided = false;
+ _cpoint = true;
+ _influence = 0;
+ }
+ // Make this point F point. Only call via amg_pointvector.
+ void make_fpoint()
+ {
+ _undecided = false;
+ _cpoint = false;
+ _influence = 0;
+ }
+ // Switch point from F to C point. Only call via amg_pointvector.
+ void switch_ftoc() { _cpoint = true; }
+
+ // Iterator handling for influencing and influenced points.
+ iterator begin_influencing() { return influencing_points.begin(); }
+ iterator end_influencing() { return influencing_points.end(); }
+ const_iterator begin_influencing() const { return influencing_points.begin(); }
+ const_iterator end_influencing() const { return influencing_points.end(); }
+ iterator begin_influenced() { return influenced_points.begin(); }
+ iterator end_influenced() { return influenced_points.end(); }
+ const_iterator begin_influenced() const { return influenced_points.begin(); }
+ const_iterator end_influenced() const { return influenced_points.end(); }
+ };
+
+ /** @brief Comparison class for the sorted set of points in amg_pointvector. Set is sorted by influence measure from lower to higher with the point-index as tie-breaker.
+ */
+ struct classcomp
+ {
+ // Function returns true if l comes before r in the ordering.
+ bool operator() (amg_point* l, amg_point* r) const
+ {
+ // Map is sorted by influence number starting with the highest
+ // If influence number is the same then lowest point index comes first
+ return (l->get_influence() < r->get_influence() || (l->get_influence() == r->get_influence() && l->get_index() > r->get_index()));
+ }
+ };
+
+ /** @brief A class for the AMG points.
+ * Holds pointers of type amg_point in a vector that can be accessed using [point-index].
+ * Additional list of pointers sorted by influence number and index to improve coarsening performance (see amg_coarse_classic_onepass() in amg_coarse.hpp)
+ * Constructs indices for C points on the coarse level, needed for interpolation.
+ */
+ class amg_pointvector
+ {
+ private:
+ // Type for the sorted list
+ typedef std::set<amg_point*,classcomp> ListType;
+ // Type for the vector of pointers
+ typedef std::vector<amg_point*> VectorType;
+ VectorType pointvector;
+ ListType pointlist;
+ unsigned int _size;
+ unsigned int c_points, f_points;
+
+ public:
+ typedef VectorType::iterator iterator;
+ typedef VectorType::const_iterator const_iterator;
+
+ /** @brief The constructor.
+ * @param size Number of points
+ */
+ amg_pointvector(unsigned int size = 0): _size(size)
+ {
+ pointvector = VectorType(size);
+ c_points = f_points = 0;
+ }
+
+ // Construct all the points dynamically and save pointers into vector.
+ void init_points()
+ {
+ for (unsigned int i=0; i<size(); ++i)
+ pointvector[i] = new amg_point(i,size());
+ }
+ // Delete all the points.
+ void delete_points()
+ {
+ for (unsigned int i=0; i<size(); ++i)
+ delete pointvector[i];
+ }
+ // Add point to the vector. Note: User has to make sure that point at point->get_index() does not exist yet, otherwise it will be overwritten!
+ void add_point(amg_point *point)
+ {
+ pointvector[point->get_index()] = point;
+ if (point->is_cpoint()) c_points++;
+ else if (point->is_fpoint()) f_points++;
+ }
+
+ // Update C and F count for point *point.
+ // Necessary if C and F points were constructed outside this data structure (e.g. by parallel coarsening RS0 or RS3).
+ void update_cf(amg_point *point)
+ {
+ if (point->is_cpoint()) c_points++;
+ else if (point->is_fpoint()) f_points++;
+ }
+ // Clear the C and F point count.
+ void clear_cf() { c_points = f_points = 0; }
+
+ // Clear both point lists.
+ void clear_influencelists()
+ {
+ for (iterator iter = pointvector.begin(); iter != pointvector.end(); ++iter)
+ {
+ (*iter)->clear_influencing();
+ (*iter)->clear_influenced();
+ }
+ }
+
+ amg_point* operator [] (unsigned int i) const { return pointvector[i]; }
+ iterator begin() { return pointvector.begin(); }
+ iterator end() { return pointvector.end(); }
+ const_iterator begin() const { return pointvector.begin(); }
+ const_iterator end() const { return pointvector.end(); }
+
+ void resize(unsigned int size)
+ {
+ _size = size;
+ pointvector = VectorType(size);
+ }
+ unsigned int size() const { return _size; }
+
+ // Returns number of C points
+ unsigned int get_cpoints() const { return c_points; }
+ // Returns number of F points
+ unsigned int get_fpoints() const { return f_points; }
+
+ // Does the initial sorting of points into the list. Sorting is automatically done by the std::set data type.
+ void sort()
+ {
+ for (iterator iter = begin(); iter != end(); ++iter)
+ pointlist.insert(*iter);
+ }
+ // Returns the point with the highest influence measure
+ amg_point* get_nextpoint()
+ {
+ // No points remaining? Return NULL such that coarsening will stop.
+ if (pointlist.size() == 0)
+ return NULL;
+ // If point with highest influence measure (end of the list) has measure of zero, then no further C points can be constructed. Return NULL.
+ if ((*(--pointlist.end()))->get_influence() == 0)
+ return NULL;
+ // Otherwise, return the point with highest influence measure located at the end of the list.
+ else
+ return *(--pointlist.end());
+ }
+ // Add "add" to influence measure for point *point in the sorted list.
+ void add_influence(amg_point* point, unsigned int add)
+ {
+ ListType::iterator iter = pointlist.find(point);
+ // If point is not in the list then stop.
+ if (iter == pointlist.end()) return;
+
+ // Save iterator and decrement
+ ListType::iterator iter2 = iter;
+ iter2--;
+
+ // Point has to be erased first as changing the value does not re-order the std::set
+ pointlist.erase(iter);
+ point->add_influence(add);
+
+ // Insert point back into the list. Using the iterator improves performance. The new position has to be at the same position or to the right of the old.
+ pointlist.insert(iter2,point);
+ }
+ // Make *point to C point and remove from sorted list
+ void make_cpoint(amg_point* point)
+ {
+ pointlist.erase(point);
+ point->make_cpoint();
+ c_points++;
+ }
+ // Make *point to F point and remove from sorted list
+ void make_fpoint(amg_point* point)
+ {
+ pointlist.erase(point);
+ point->make_fpoint();
+ f_points++;
+ }
+ // Swich *point from F to C point
+ void switch_ftoc(amg_point* point)
+ {
+ point->switch_ftoc();
+ c_points++;
+ f_points--;
+ }
+
+ // Build vector of indices for C point on the coarse level.
+ void build_index()
+ {
+ unsigned int count = 0;
+ // Use simple counter for index creation.
+ for (iterator iter = pointvector.begin(); iter != pointvector.end(); ++iter)
+ {
+ // Set index on coarse level using counter variable
+ if ((*iter)->is_cpoint())
+ {
+ (*iter)->set_coarse_index(count);
+ count++;
+ }
+ }
+ }
+
+ // Return information for debugging purposes
+ template <typename MatrixType>
+ void get_influence_matrix(MatrixType & mat) const
+ {
+ mat = MatrixType(size(),size());
+ mat.clear();
+
+ for (const_iterator row_iter = begin(); row_iter != end(); ++row_iter)
+ for (amg_point::iterator col_iter = (*row_iter)->begin_influencing(); col_iter != (*row_iter)->end_influencing(); ++col_iter)
+ mat((*row_iter)->get_index(),(*col_iter)->get_index()) = true;
+ }
+ template <typename VectorType>
+ void get_influence(VectorType & vec) const
+ {
+ vec = VectorType(_size);
+ vec.clear();
+
+ for (const_iterator iter = begin(); iter != end(); ++iter)
+ vec[(*iter)->get_index()] = (*iter)->get_influence();
+ }
+ template <typename VectorType>
+ void get_sorting(VectorType & vec) const
+ {
+ vec = VectorType(pointlist.size());
+ vec.clear();
+ unsigned int i=0;
+
+ for (ListType::const_iterator iter = pointlist.begin(); iter != pointlist.end(); ++iter)
+ {
+ vec[i] = (*iter)->get_index();
+ i++;
+ }
+ }
+ template <typename VectorType>
+ void get_C(VectorType & vec) const
+ {
+ vec = VectorType(_size);
+ vec.clear();
+
+ for (const_iterator iter = begin(); iter != end(); ++iter)
+ {
+ if ((*iter)->is_cpoint())
+ vec[(*iter)->get_index()] = true;
+ }
+ }
+ template <typename VectorType>
+ void get_F(VectorType & vec) const
+ {
+ vec = VectorType(_size);
+ vec.clear();
+
+ for (const_iterator iter = begin(); iter != end(); ++iter)
+ {
+ if ((*iter)->is_fpoint())
+ vec[(*iter)->get_index()] = true;
+ }
+ }
+ template <typename MatrixType>
+ void get_Aggregates(MatrixType & mat) const
+ {
+ mat = MatrixType(_size,_size);
+ mat.clear();
+
+ for (const_iterator iter = begin(); iter != end(); ++iter)
+ {
+ if (!(*iter)->is_undecided())
+ mat((*iter)->get_aggregate(),(*iter)->get_index()) = true;
+ }
+ }
+ };
+
+ /** @brief A class for the matrix slicing for parallel coarsening schemes (RS0/RS3).
+ * @brief Holds information on a per-processor basis and offers functionality to slice and join the data structures.
+ */
+ template <typename InternalType1, typename InternalType2>
+ class amg_slicing
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+
+ public:
+ // Data structures on a per-processor basis.
+ boost::numeric::ublas::vector<InternalType1> A_slice;
+ boost::numeric::ublas::vector<InternalType2> Pointvector_slice;
+ // Holds the offsets showing the indices for which a new slice begins.
+ boost::numeric::ublas::vector<boost::numeric::ublas::vector<unsigned int> > Offset;
+
+ unsigned int _threads;
+ unsigned int _levels;
+
+ void init(unsigned int levels, unsigned int threads = 0)
+ {
+ // Either use the number of threads chosen by the user or the maximum number of threads available on the processor.
+ if (threads == 0)
+ #ifdef _OPENMP
+ _threads = omp_get_num_procs();
+ #else
+ _threads = 1;
+ #endif
+ else
+ _threads = threads;
+
+ _levels = levels;
+
+ A_slice.resize(_threads);
+ Pointvector_slice.resize(_threads);
+ // Offset has _threads+1 entries to also hold the total size
+ Offset.resize(_threads+1);
+
+ for (unsigned int i=0; i<_threads; ++i)
+ {
+ A_slice[i].resize(_levels);
+ Pointvector_slice[i].resize(_levels);
+ // Offset needs one more level for the build-up of the next offset
+ Offset[i].resize(_levels+1);
+ }
+ Offset[_threads].resize(_levels+1);
+ } //init()
+
+ // Slice matrix A into as many parts as threads are used.
+ void slice (unsigned int level, InternalType1 const & A, InternalType2 const & Pointvector)
+ {
+ // On the finest level, build a new slicing first.
+ if (level == 0)
+ slice_new (level, A);
+
+ // On coarser levels use the same slicing as on the finest level (Points stay together on the same thread on all levels).
+ // This is necessary as due to interpolation and galerkin product there only exist connections between points on the same thread on coarser levels.
+ // Note: Offset is determined in amg_coarse_rs0() after fine level was built.
+ slice_build (level, A, Pointvector);
+ }
+
+ // Join point data structure into Pointvector
+ void join (unsigned int level, InternalType2 & Pointvector) const
+ {
+ typedef typename InternalType2::value_type PointVectorType;
+
+ // Reset index offset of all points and update overall C and F point count
+ Pointvector[level].clear_cf();
+ for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+ {
+ (*iter)->set_offset(0);
+ Pointvector[level].update_cf(*iter);
+ }
+ }
+
+ private:
+ /** @brief Slices mat into this->threads parts of (almost) equal size
+ * @param level Level for which slicing is requested
+ * @param A System matrix on all levels
+ */
+ void slice_new (unsigned int level, InternalType1 const & A)
+ {
+ typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+ typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+
+ // Determine index offset of all the slices (index of A[level] when the respective slice starts).
+ #ifdef _OPENMP
+ #pragma omp parallel for
+ #endif
+ for (unsigned int i=0; i<=_threads; ++i)
+ {
+ // Offset of first piece is zero. Pieces 1,...,threads-1 have equal size while the last one might be greater.
+ if (i == 0) Offset[i][level] = 0;
+ else if (i == _threads) Offset[i][level] = A[level].size1();
+ else Offset[i][level] = i*(A[level].size1()/_threads);
+ }
+ }
+
+ /** @brief Slices mat into pieces determined by this->Offset
+ * @param level Level to which Slices are saved
+ * @param A System matrix on all levels
+ * @param Pointvector Vector of points on all levels
+ */
+ void slice_build (unsigned int level, InternalType1 const & A, InternalType2 const & Pointvector)
+ {
+ typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+ typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+
+ unsigned int x, y;
+ amg_point *point;
+
+ #ifdef _OPENMP
+ #pragma omp parallel for private (x,y,point)
+ #endif
+ for (unsigned int i=0; i<_threads; ++i)
+ {
+ // Allocate space for the matrix slice and the pointvector.
+ A_slice[i][level] = SparseMatrixType(Offset[i+1][level]-Offset[i][level],Offset[i+1][level]-Offset[i][level]);
+ Pointvector_slice[i][level] = PointVectorType(Offset[i+1][level]-Offset[i][level]);
+
+ // Iterate over the part that belongs to thread i (from Offset[i][level] to Offset[i+1][level]).
+ ConstRowIterator row_iter = A[level].begin1();
+ row_iter += Offset[i][level];
+ x = row_iter.index1();
+
+ while (x < Offset[i+1][level] && row_iter != A[level].end1())
+ {
+ // Set offset for point index and save point for the respective thread
+ point = Pointvector[level][x];
+ point->set_offset(Offset[i][level]);
+ Pointvector_slice[i][level].add_point(point);
+
+ ConstColIterator col_iter = row_iter.begin();
+ y = col_iter.index2();
+
+ // Save all coefficients from the matrix slice
+ while (y < Offset[i+1][level] && col_iter != row_iter.end())
+ {
+ if (y >= Offset[i][level])
+ A_slice[i][level](x-Offset[i][level],y-Offset[i][level]) = *col_iter;
+
+ ++col_iter;
+ y = col_iter.index2();
+ }
+
+ ++row_iter;
+ x = row_iter.index1();
+ }
+ }
+ }
+ };
+
+ /** @brief Sparse matrix product. Calculates RES = A*B.
+ * @param A Left Matrix
+ * @param B Right Matrix
+ * @param RES Result Matrix
+ */
+ template <typename SparseMatrixType>
+ void amg_mat_prod (SparseMatrixType & A, SparseMatrixType & B, SparseMatrixType & RES)
+ {
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ unsigned int x,y,z;
+ ScalarType prod;
+ RES = SparseMatrixType(A.size1(), B.size2());
+ RES.clear();
+
+ #ifdef _OPENMP
+ #pragma omp parallel for private (x,y,z,prod) shared (A,B,RES)
+ #endif
+ for (x=0; x<A.size1(); ++x)
+ {
+ InternalRowIterator row_iter = A.begin1();
+ row_iter += x;
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ y = col_iter.index2();
+ InternalRowIterator row_iter2 = B.begin1();
+ row_iter2 += y;
+
+ for(InternalColIterator col_iter2 = row_iter2.begin(); col_iter2 != row_iter2.end(); ++col_iter2)
+ {
+ z = col_iter2.index2();
+ prod = *col_iter * *col_iter2;
+ RES.add(x,z,prod);
+ }
+ }
+ }
+ }
+
+ /** @brief Sparse Galerkin product: Calculates RES = trans(P)*A*P
+ * @param A Operator matrix (quadratic)
+ * @param P Prolongation/Interpolation matrix
+ * @param RES Result Matrix (Galerkin operator)
+ */
+ template <typename SparseMatrixType>
+ void amg_galerkin_prod (SparseMatrixType & A, SparseMatrixType & P, SparseMatrixType & RES)
+ {
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ unsigned int x,y1,y2,z;
+ amg_sparsevector<ScalarType> row;
+ RES = SparseMatrixType(P.size2(), P.size2());
+ RES.clear();
+
+ #ifdef _OPENMP
+ #pragma omp parallel for private (x,y1,y2,z,row) shared (A,P,RES)
+ #endif
+ for (x=0; x<P.size2(); ++x)
+ {
+ row = amg_sparsevector<ScalarType>(A.size2());
+ InternalRowIterator row_iter = P.begin1(true);
+ row_iter += x;
+
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ y1 = col_iter.index2();
+ InternalRowIterator row_iter2 = A.begin1();
+ row_iter2 += y1;
+
+ for(InternalColIterator col_iter2 = row_iter2.begin(); col_iter2 != row_iter2.end(); ++col_iter2)
+ {
+ y2 = col_iter2.index2();
+ row.add (y2, *col_iter * *col_iter2);
+ }
+ }
+ for (typename amg_sparsevector<ScalarType>::iterator iter = row.begin(); iter != row.end(); ++iter)
+ {
+ y2 = iter.index();
+ InternalRowIterator row_iter3 = P.begin1();
+ row_iter3 += y2;
+
+ for (InternalColIterator col_iter3 = row_iter3.begin(); col_iter3 != row_iter3.end(); ++col_iter3)
+ {
+ z = col_iter3.index2();
+ RES.add (x, z, *col_iter3 * *iter);
+ }
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "Galerkin Operator: " << std::endl;
+ printmatrix (RES);
+ #endif
+ }
+
+ /** @brief Test triple-matrix product by comparing it to ublas functions. Very slow for large matrices!
+ * @param A Operator matrix (quadratic)
+ * @param P Prolongation/Interpolation matrix
+ * @param A_i1 Result Matrix
+ */
+ template <typename SparseMatrixType>
+ void test_triplematprod(SparseMatrixType & A, SparseMatrixType & P, SparseMatrixType & A_i1)
+ {
+ typedef typename SparseMatrixType::value_type ScalarType;
+
+ boost::numeric::ublas::compressed_matrix<ScalarType> A_temp (A.size1(), A.size2());
+ A_temp = A;
+ boost::numeric::ublas::compressed_matrix<ScalarType> P_temp (P.size1(), P.size2());
+ P_temp = P;
+ P.set_trans(true);
+ boost::numeric::ublas::compressed_matrix<ScalarType> R_temp (P.size1(), P.size2());
+ R_temp = P;
+ P.set_trans(false);
+
+ boost::numeric::ublas::compressed_matrix<ScalarType> RA (R_temp.size1(),A_temp.size2());
+ RA = boost::numeric::ublas::prod(R_temp,A_temp);
+ boost::numeric::ublas::compressed_matrix<ScalarType> RAP (RA.size1(),P_temp.size2());
+ RAP = boost::numeric::ublas::prod(RA,P_temp);
+
+ for (unsigned int x=0; x<RAP.size1(); ++x)
+ {
+ for (unsigned int y=0; y<RAP.size2(); ++y)
+ {
+ if (abs((ScalarType)RAP(x,y) - (ScalarType)A_i1(x,y)) > 0.0001)
+ std::cout << x << " " << y << " " << RAP(x,y) << " " << A_i1(x,y) << std::endl;
+ }
+ }
+ }
+
+ /** @brief Test if interpolation matrix makes sense. Only vanilla test though! Only checks if basic requirements are met!
+ * @param A Operator matrix (quadratic)
+ * @param P Prolongation/Interpolation matrix
+ * @param Pointvector Vector of points
+ */
+ template <typename SparseMatrixType, typename PointVectorType>
+ void test_interpolation(SparseMatrixType & A, SparseMatrixType & P, PointVectorType & Pointvector)
+ {
+ for (unsigned int i=0; i<P.size1(); ++i)
+ {
+ if (Pointvector.is_cpoint(i))
+ {
+ bool set = false;
+ for (unsigned int j=0; j<P.size2(); ++j)
+ {
+ if (P.isnonzero(i,j))
+ {
+ if (P(i,j) != 1)
+ std::cout << "Error 1 in row " << i << std::endl;
+ if (P(i,j) == 1 && set)
+ std::cout << "Error 2 in row " << i << std::endl;
+ if (P(i,j) == 1 && !set)
+ set = true;
+ }
+ }
+ }
+
+ if (Pointvector.is_fpoint(i))
+ for (unsigned int j=0; j<P.size2(); ++j)
+ {
+ if (P.isnonzero(i,j) && j> Pointvector.get_cpoints()-1)
+ std::cout << "Error 3 in row " << i << std::endl;
+ if (P.isnonzero(i,j))
+ {
+ bool set = false;
+ for (unsigned int k=0; k<P.size1(); ++k)
+ {
+ if (P.isnonzero(k,j))
+ {
+ if (Pointvector.is_cpoint(k) && P(k,j) == 1 && A.isnonzero(i,k))
+ set = true;
+ }
+ }
+ if (!set)
+ std::cout << "Error 4 in row " << i << std::endl;
+ }
+ }
+ }
+ }
+
+
+ } //namespace amg
+ }
+ }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/amg/amg_coarse.hpp b/viennacl/linalg/detail/amg/amg_coarse.hpp
new file mode 100644
index 0000000..8b56dce
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_coarse.hpp
@@ -0,0 +1,697 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_COARSE_HPP
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_COARSE_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_coarse.hpp
+ @brief Implementations of several variants of the AMG coarsening procedure (setup phase). Experimental.
+*/
+
+#include <cmath>
+#include "viennacl/linalg/amg.hpp"
+
+#include <map>
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#include "amg_debug.hpp"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace amg
+ {
+
+ /** @brief Calls the right coarsening procedure
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param Slicing Partitioning of the system matrix to different processors (only used in RS0 and RS3)
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2, typename InternalType3>
+ void amg_coarse(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, InternalType3 & Slicing, amg_tag & tag)
+ {
+ switch (tag.get_coarse())
+ {
+ case VIENNACL_AMG_COARSE_RS: amg_coarse_classic (level, A, Pointvector, tag); break;
+ case VIENNACL_AMG_COARSE_ONEPASS: amg_coarse_classic_onepass (level, A, Pointvector, tag); break;
+ case VIENNACL_AMG_COARSE_RS0: amg_coarse_rs0 (level, A, Pointvector, Slicing, tag); break;
+ case VIENNACL_AMG_COARSE_RS3: amg_coarse_rs3 (level, A, Pointvector, Slicing, tag); break;
+ case VIENNACL_AMG_COARSE_AG: amg_coarse_ag (level, A, Pointvector, tag); break;
+ }
+ }
+
+ /** @brief Determines strong influences in system matrix, classical approach (RS). Multithreaded!
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_influence(unsigned int level, InternalType1 const & A, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::const_iterator1 ConstRowIterator;
+ typedef typename SparseMatrixType::const_iterator2 ConstColIterator;
+
+ ScalarType max;
+ int diag_sign;
+ //unsigned int i;
+
+#ifdef _OPENMP
+ #pragma omp parallel for private (max,diag_sign) shared (A,Pointvector)
+#endif
+ for (unsigned int i=0; i<A[level].size1(); ++i)
+ {
+ diag_sign = 1;
+ if (A[level](i,i) < 0)
+ diag_sign = -1;
+
+ ConstRowIterator row_iter = A[level].begin1();
+ row_iter += i;
+ // Find greatest non-diagonal negative value (positive if diagonal is negative) in row
+ max = 0;
+ for (ConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (i == (unsigned int) col_iter.index2()) continue;
+ if (diag_sign == 1)
+ if (max > *col_iter) max = *col_iter;
+ if (diag_sign == -1)
+ if (max < *col_iter) max = *col_iter;
+ }
+
+ // If maximum is 0 then the row is independent of the others
+ if (max == 0)
+ continue;
+
+ // Find all points that strongly influence current point (Yang, p.5)
+ for (ConstColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ unsigned int j = col_iter.index2();
+ if (i == j) continue;
+ if (diag_sign * (-*col_iter) >= tag.get_threshold() * (diag_sign * (-max)))
+ {
+ // Strong influence from j to i found, save information
+ Pointvector[level][i]->add_influencing_point(Pointvector[level][j]);
+ }
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "Influence Matrix: " << std::endl;
+ boost::numeric::ublas::matrix<bool> mat;
+ Pointvector[level].get_influence_matrix(mat);
+ printmatrix (mat);
+ #endif
+
+ // Save influenced points
+ for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+ {
+ for (typename amg_point::iterator iter2 = (*iter)->begin_influencing(); iter2 != (*iter)->end_influencing(); ++iter2)
+ {
+ (*iter2)->add_influenced_point(*iter);
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "Influence Measures: " << std::endl;
+ boost::numeric::ublas::vector<unsigned int> temp;
+ Pointvector[level].get_influence(temp);
+ printvector (temp);
+ std::cout << "Point Sorting: " << std::endl;
+ Pointvector[level].get_sorting(temp);
+ printvector (temp);
+ #endif
+ }
+
+ /** @brief Classical (RS) one-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC_ONEPASS)
+ * @param level Course level identifier
+ * @param A Operator matrix on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_coarse_classic_onepass(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ amg_point* c_point, *point1, *point2;
+ unsigned int i;
+
+ // Check and save all strong influences
+ amg_influence (level, A, Pointvector, tag);
+
+ // Traverse through points and calculate initial influence measure
+#ifdef _OPENMP
+ #pragma omp parallel for private (i) shared (Pointvector)
+#endif
+ for (i=0; i<Pointvector[level].size(); ++i)
+ Pointvector[level][i]->calc_influence();
+
+ // Do initial sorting
+ Pointvector[level].sort();
+
+ // Get undecided point with highest influence measure
+ while ((c_point = Pointvector[level].get_nextpoint()) != NULL)
+ {
+ // Make this point C point
+ Pointvector[level].make_cpoint(c_point);
+
+ // All strongly influenced points become F points
+ for (typename amg_point::iterator iter = c_point->begin_influenced(); iter != c_point->end_influenced(); ++iter)
+ {
+ point1 = *iter;
+ // Found strong influence from C point (c_point influences point1), check whether point is still undecided, otherwise skip
+ if (!point1->is_undecided()) continue;
+ // Make this point F point if it is still undecided point
+ Pointvector[level].make_fpoint(point1);
+
+ // Add +1 to influence measure for all undecided points that strongly influence new F point
+ for (typename amg_point::iterator iter2 = point1->begin_influencing(); iter2 != point1->end_influencing(); ++iter2)
+ {
+ point2 = *iter2;
+ // Found strong influence to F point (point2 influences point1)
+ if (point2->is_undecided())
+ Pointvector[level].add_influence(point2,1);
+ }
+ }
+ }
+
+ // If a point is neither C nor F point but is nevertheless influenced by other points make it F point
+ // (this situation can happen when this point does not influence other points and the points that influence this point became F points already)
+ /*#pragma omp parallel for private (i,point1)
+ for (i=0; i<Pointvector[level].size(); ++i)
+ {
+ point1 = Pointvector[level][i];
+ if (point1->is_undecided())
+ {
+ // Undecided point found. Check whether it is influenced by other point and if so: Make it F point.
+ if (point1->number_influencing() > 0)
+ {
+ #pragma omp critical
+ Pointvector[level].make_fpoint(point1);
+ }
+ }
+ }*/
+
+ #if defined (DEBUG)// or defined (DEBUGBENCH)
+ unsigned int c_points = Pointvector[level].get_cpoints();
+ unsigned int f_points = Pointvector[level].get_fpoints();
+ std::cout << "1st pass: Level " << level << ": ";
+ std::cout << "No of C points = " << c_points << ", ";
+ std::cout << "No of F points = " << f_points << std::endl;
+ #endif
+
+ #ifdef DEBUG
+ std::cout << "Coarse Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> C;
+ Pointvector[level].get_C(C);
+ printvector (C);
+ std::cout << "Fine Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> F;
+ Pointvector[level].get_F(F);
+ printvector (F);
+ #endif
+ }
+
+ /** @brief Classical (RS) two-pass coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_CLASSIC)
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_coarse_classic(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ bool add_C;
+ amg_point *c_point, *point1, *point2;
+
+ // Use one-pass-coarsening as first pass.
+ amg_coarse_classic_onepass(level, A, Pointvector, tag);
+
+ // 2nd pass: Add more C points if F-F connection does not have a common C point.
+ for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+ {
+ point1 = *iter;
+ // If point is F point, check for strong connections.
+ if (point1->is_fpoint())
+ {
+ // Check for strong connections from influencing and influenced points.
+ amg_point::iterator iter2 = point1->begin_influencing();
+ amg_point::iterator iter3 = point1->begin_influenced();
+
+ // Iterate over both lists at once. This makes sure that points are no checked twice when influence relation is symmetric (which is often the case).
+ // Note: Only works because influencing and influenced lists are sorted by point-index.
+ while(iter2 != point1->end_influencing() || iter3 != point1->end_influenced())
+ {
+ if (iter2 == point1->end_influencing())
+ {
+ point2 = *iter3;
+ ++iter3;
+ }
+ else if (iter3 == point1->end_influenced())
+ {
+ point2 = *iter2;
+ ++iter2;
+ }
+ else
+ {
+ if ((*iter2)->get_index() == (*iter3)->get_index())
+ {
+ point2 = *iter2;
+ ++iter2;
+ ++iter3;
+ }
+ else if ((*iter2)->get_index() < (*iter3)->get_index())
+ {
+ point2 = *iter2;
+ ++iter2;
+ }
+ else
+ {
+ point2 = *iter3;
+ ++iter3;
+ }
+ }
+ // Only check points with higher index as points with lower index have been checked already.
+ if (point2->get_index() < point1->get_index())
+ continue;
+
+ // If there is a strong connection then it has to either be a C point or a F point with common C point.
+ // C point? Then skip as everything is ok.
+ if (point2->is_cpoint())
+ continue;
+ // F point? Then check whether F points point1 and point2 have a common C point.
+ if (point2->is_fpoint())
+ {
+ add_C = true;
+ // C point is common for two F points if they are both strongly influenced by that C point.
+ // Compare strong influences for point1 and point2.
+ for (amg_point::iterator iter3 = point1->begin_influencing(); iter3 != point1 -> end_influencing(); ++iter3)
+ {
+ c_point = *iter3;
+ // Stop search when strong common influence is found via c_point.
+ if (c_point->is_cpoint())
+ {
+ if (point2->is_influencing(c_point))
+ {
+ add_C = false;
+ break;
+ }
+ }
+ }
+ // No common C point found? Then make second F point to C point.
+ if (add_C == true)
+ Pointvector[level].switch_ftoc(point2);
+ }
+ }
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "After 2nd pass:" << std::endl;
+ std::cout << "Coarse Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> C;
+ Pointvector[level].get_C(C);
+ printvector (C);
+ std::cout << "Fine Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> F;
+ Pointvector[level].get_F(F);
+ printvector (F);
+ #endif
+
+ #ifdef DEBUG
+#ifdef _OPENMP
+ #pragma omp critical
+#endif
+ {
+ std::cout << "No C and no F point: ";
+ for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+ if ((*iter)->is_undecided())
+ std::cout << (*iter)->get_index() << " ";
+ std::cout << std::endl;
+ }
+ #endif
+ }
+
+ /** @brief Parallel classical RS0 coarsening. Multi-Threaded! (VIENNACL_AMG_COARSE_RS0 || VIENNACL_AMG_COARSE_RS3)
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all level
+ * @param Pointvector Vector of points on all levels
+ * @param Slicing Partitioning of the system matrix and the other data structures to different processors
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2, typename InternalType3>
+ void amg_coarse_rs0(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, InternalType3 & Slicing, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ unsigned int total_points;
+
+ // Slice matrix into parts such that points are distributed among threads
+ Slicing.slice(level, A, Pointvector);
+
+ // Run classical coarsening in parallel
+ total_points = 0;
+#ifdef _OPENMP
+ #pragma omp parallel for shared (total_points,Slicing,level)
+#endif
+ for (unsigned int i=0; i<Slicing._threads; ++i)
+ {
+ amg_coarse_classic(level,Slicing.A_slice[i],Slicing.Pointvector_slice[i],tag);
+
+ // Save C points (using Slicing.Offset on the next level as temporary memory)
+ // Note: Number of C points for point i is saved in i+1!! (makes it easier later to compute offset)
+ Slicing.Offset[i+1][level+1] = Slicing.Pointvector_slice[i][level].get_cpoints();
+#ifdef _OPENMP
+ #pragma omp critical
+#endif
+ total_points += Slicing.Pointvector_slice[i][level].get_cpoints();
+ }
+
+ // If no coarser level can be found on any level then resume and coarsening will stop in amg_coarse()
+ if (total_points != 0)
+ {
+#ifdef _OPENMP
+ #pragma omp parallel for shared (Slicing)
+#endif
+ for (unsigned int i=0; i<Slicing._threads; ++i)
+ {
+ // If no higher coarse level can be found on slice i (saved in Slicing.Offset[i+1][level+1]) then pull C point(s) to the next level
+ if (Slicing.Offset[i+1][level+1] == 0)
+ {
+ // All points become C points
+ for (unsigned int j=0; j<Slicing.A_slice[i][level].size1(); ++j)
+ Slicing.Pointvector_slice[i][level].make_cpoint(Slicing.Pointvector_slice[i][level][j]);
+ Slicing.Offset[i+1][level+1] = Slicing.A_slice[i][level].size1();
+ }
+ }
+
+ // Build slicing offset from number of C points (offset = total sum of C points on threads with lower number)
+ for (unsigned int i=2; i<=Slicing._threads; ++i)
+ Slicing.Offset[i][level+1] += Slicing.Offset[i-1][level+1];
+
+ // Join C and F points
+ Slicing.join(level, Pointvector);
+ }
+
+ // Calculate global influence measures for interpolation and/or RS3.
+ amg_influence(level, A, Pointvector, tag);
+
+ #if defined(DEBUG)// or defined (DEBUGBENCH)
+ for (unsigned int i=0; i<Slicing._threads; ++i)
+ {
+ unsigned int c_points = Slicing.Pointvector_slice[i][level].get_cpoints();
+ unsigned int f_points = Slicing.Pointvector_slice[i][level].get_fpoints();
+ std::cout << "Thread " << i << ": ";
+ std::cout << "No of C points = " << c_points << ", ";
+ std::cout << "No of F points = " << f_points << std::endl;
+ }
+ #endif
+ }
+
+ /** @brief RS3 coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_RS3)
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param Slicing Partitioning of the system matrix and the other data structures to different processors
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2, typename InternalType3>
+ void amg_coarse_rs3(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, InternalType3 & Slicing, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ amg_point *c_point, *point1, *point2;
+ bool add_C;
+ unsigned int i, j;
+
+ // Run RS0 first (parallel).
+ amg_coarse_rs0(level, A, Pointvector, Slicing, tag);
+
+ // Save slicing offset
+ boost::numeric::ublas::vector<unsigned int> Offset = boost::numeric::ublas::vector<unsigned int> (Slicing.Offset.size());
+ for (i=0; i<Slicing.Offset.size(); ++i)
+ Offset[i] = Slicing.Offset[i][level];
+
+ // Correct the coarsening with a third pass: Don't allow strong F-F connections without common C point
+ for (i=0; i<Slicing._threads; ++i)
+ {
+ //for (j=Slicing.Offset[i][level]; j<Slicing.Offset[i+1][level]; ++j)
+ for (j=Offset[i]; j<Offset[i+1]; ++j)
+ {
+ point1 = Pointvector[level][j];
+ // If point is F point, check for strong connections.
+ if (point1->is_fpoint())
+ {
+ // Check for strong connections from influencing and influenced points.
+ amg_point::iterator iter2 = point1->begin_influencing();
+ amg_point::iterator iter3 = point1->begin_influenced();
+
+ // Iterate over both lists at once. This makes sure that points are no checked twice when influence relation is symmetric (which is often the case).
+ // Note: Only works because influencing and influenced lists are sorted by point-index.
+ while(iter2 != point1->end_influencing() || iter3 != point1->end_influenced())
+ {
+ if (iter2 == point1->end_influencing())
+ {
+ point2 = *iter3;
+ ++iter3;
+ }
+ else if (iter3 == point1->end_influenced())
+ {
+ point2 = *iter2;
+ ++iter2;
+ }
+ else
+ {
+ if ((*iter2)->get_index() == (*iter3)->get_index())
+ {
+ point2 = *iter2;
+ ++iter2;
+ ++iter3;
+ }
+ else if ((*iter2)->get_index() < (*iter3)->get_index())
+ {
+ point2 = *iter2;
+ ++iter2;
+ }
+ else
+ {
+ point2 = *iter3;
+ ++iter3;
+ }
+ }
+
+ // Only check points with higher index as points with lower index have been checked already.
+ if (point2->get_index() < point1->get_index())
+ continue;
+
+ // Only check points that are outside the slicing boundaries (interior F-F connections have already been checked in second pass)
+ //if (point2->get_index() >= Slicing.Offset[i][level] || point2->get_index() < Slicing.Offset[i+1][level])
+ if (point2->get_index() >= Offset[i] && point2->get_index() < Offset[i+1])
+ continue;
+
+ // If there is a strong connection then it has to either be a C point or a F point with common C point.
+ // C point? Then skip as everything is ok.
+ if (point2->is_cpoint())
+ continue;
+ // F point? Then check whether F points point1 and point2 have a common C point.
+ if (point2->is_fpoint())
+ {
+ add_C = true;
+ // C point is common for two F points if they are both strongly influenced by that C point.
+ // Compare strong influences for point1 and point2.
+ for (amg_point::iterator iter3 = point1->begin_influencing(); iter3 != point1 -> end_influencing(); ++iter3)
+ {
+ c_point = *iter3;
+ // Stop search when strong common influence is found via c_point.
+ if (c_point->is_cpoint())
+ {
+ if (point2->is_influencing(c_point))
+ {
+ add_C = false;
+ break;
+ }
+ }
+ }
+ // No common C point found? Then make second F point to C point.
+ if (add_C == true)
+ {
+ Pointvector[level].switch_ftoc(point2);
+ // Add +1 to offsets as one C point has been added.
+ for (unsigned int j=i+1; j<=Slicing._threads; ++j)
+ Slicing.Offset[j][level+1]++;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "After 3rd pass:" << std::endl;
+ std::cout << "Coarse Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> C;
+ Pointvector[level].get_C(C);
+ printvector (C);
+ std::cout << "Fine Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> F;
+ Pointvector[level].get_F(F);
+ printvector (F);
+ #endif
+
+ #ifdef DEBUG
+ unsigned int i;
+#ifdef _OPENMP
+ #pragma omp critical
+#endif
+ {
+ std::cout << "No C and no F point: ";
+ for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+ if ((*iter)->is_undecided())
+ std::cout << i << " ";
+ std::cout << std::endl;
+ }
+ #endif
+ }
+
+ /** @brief AG (aggregation based) coarsening. Single-Threaded! (VIENNACL_AMG_COARSE_SA)
+ *
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_coarse_ag(unsigned int level, InternalType1 & A, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ unsigned int x,y;
+ ScalarType diag;
+ amg_point *pointx, *pointy;
+
+ // Cannot determine aggregates if size == 1 as then a new aggregate would always consist of this point (infinite loop)
+ if (A[level].size1() == 1) return;
+
+ // SA algorithm (Vanek et al. p.6)
+ // Build neighborhoods
+#ifdef _OPENMP
+ #pragma omp parallel for private (x,y,diag) shared (A)
+#endif
+ for (x=0; x<A[level].size1(); ++x)
+ {
+ InternalRowIterator row_iter = A[level].begin1();
+ row_iter += x;
+ diag = A[level](x,x);
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ y = col_iter.index2();
+ if (y == x || (std::abs(*col_iter) >= tag.get_threshold()*pow(0.5,level-1) * sqrt(std::abs(diag*A[level](y,y)))))
+ {
+ // Neighborhood x includes point y
+ Pointvector[level][x]->add_influencing_point(Pointvector[level][y]);
+ }
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "Neighborhoods:" << std::endl;
+ boost::numeric::ublas::matrix<bool> mat;
+ Pointvector[level].get_influence_matrix(mat);
+ printmatrix (mat);
+ #endif
+
+ // Build aggregates from neighborhoods
+ for (typename PointVectorType::iterator iter = Pointvector[level].begin(); iter != Pointvector[level].end(); ++iter)
+ {
+ pointx = (*iter);
+
+ if (pointx->is_undecided())
+ {
+ // Make center of aggregate to C point and include it to aggregate x.
+ Pointvector[level].make_cpoint(pointx);
+ pointx->set_aggregate (pointx->get_index());
+ for (amg_point::iterator iter2 = pointx->begin_influencing(); iter2 != pointx->end_influencing(); ++iter2)
+ {
+ pointy = (*iter2);
+
+ if (pointy->is_undecided())
+ {
+ // Make neighbor y to F point and include it to aggregate x.
+ Pointvector[level].make_fpoint(pointy);
+ pointy->set_aggregate (pointx->get_index());
+ }
+ }
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "After aggregation:" << std::endl;
+ std::cout << "Coarse Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> C;
+ Pointvector[level].get_C(C);
+ printvector (C);
+ std::cout << "Fine Points:" << std::endl;
+ boost::numeric::ublas::vector<bool> F;
+ Pointvector[level].get_F(F);
+ printvector (F);
+ std::cout << "Aggregates:" << std::endl;
+ printvector (Aggregates[level]);
+ #endif
+ }
+ } //namespace amg
+ }
+ }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/amg/amg_debug.hpp b/viennacl/linalg/detail/amg/amg_debug.hpp
new file mode 100644
index 0000000..fe22729
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_debug.hpp
@@ -0,0 +1,82 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_DEBUG_HPP
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_DEBUG_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_debug.hpp
+ @brief Debug functionality for AMG. To be removed.
+
+ AMG code contributed by Markus Wagner
+*/
+
+#include <iostream>
+#include "viennacl/io/matrix_market.hpp"
+
+#ifdef SMALL_SIZE
+#define VIENNACL_AMG_MATRIXTYPE boost::numeric::ublas::matrix<ScalarType>
+#else
+#define VIENNACL_AMG_MATRIXTYPE MatrixType
+#endif
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace amg
+ {
+
+ template <typename MatrixType>
+ void printmatrix(MatrixType & mat, int const value=-1)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+ typedef typename VIENNACL_AMG_MATRIXTYPE::iterator1 InternalRowIterator;
+ typedef typename VIENNACL_AMG_MATRIXTYPE::iterator2 InternalColIterator;
+
+ #ifdef DEBUG
+ VIENNACL_AMG_MATRIXTYPE mat2 = mat;
+
+ for (InternalRowIterator row_iter = mat2.begin1(); row_iter != mat2.end1(); ++row_iter)
+ {
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ std::cout << *col_iter << " ";
+ }
+ std::cout << std::endl;
+ }
+ std::cout << std::endl;
+ #endif
+ }
+
+ template <typename VectorType>
+ void printvector(VectorType const & vec)
+ {
+ #ifdef DEBUGBENCH
+ for (typename VectorType::const_iterator iter = vec.begin(); iter != vec.end(); ++iter)
+ {
+ std::cout << *iter << " ";
+ }
+ std::cout << std::endl;
+ #endif
+ }
+
+ }
+ }
+ }
+}
+#endif
diff --git a/viennacl/linalg/detail/amg/amg_interpol.hpp b/viennacl/linalg/detail/amg/amg_interpol.hpp
new file mode 100644
index 0000000..d397c15
--- /dev/null
+++ b/viennacl/linalg/detail/amg/amg_interpol.hpp
@@ -0,0 +1,483 @@
+#ifndef VIENNACL_LINALG_DETAIL_AMG_AMG_INTERPOL_HPP
+#define VIENNACL_LINALG_DETAIL_AMG_AMG_INTERPOL_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file amg_interpol.hpp
+ @brief Implementations of several variants of the AMG interpolation operators (setup phase). Experimental.
+*/
+
+#include <boost/numeric/ublas/vector.hpp>
+#include <cmath>
+#include "viennacl/linalg/amg.hpp"
+
+#include <map>
+#ifdef _OPENMP
+#include <omp.h>
+#endif
+
+#include "amg_debug.hpp"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace amg
+ {
+
+ /** @brief Calls the right function to build interpolation matrix
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param P Prolongation matrices. P[level] is constructed
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_interpol(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ switch (tag.get_interpol())
+ {
+ case VIENNACL_AMG_INTERPOL_DIRECT: amg_interpol_direct (level, A, P, Pointvector, tag); break;
+ case VIENNACL_AMG_INTERPOL_CLASSIC: amg_interpol_classic (level, A, P, Pointvector, tag); break;
+ case VIENNACL_AMG_INTERPOL_AG: amg_interpol_ag (level, A, P, Pointvector, tag); break;
+ case VIENNACL_AMG_INTERPOL_SA: amg_interpol_sa (level, A, P, Pointvector, tag); break;
+ }
+ }
+ /** @brief Direct interpolation. Multi-threaded! (VIENNACL_AMG_INTERPOL_DIRECT)
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param P Prolongation matrices. P[level] is constructed
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_interpol_direct(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ ScalarType temp_res;
+ ScalarType row_sum, c_sum, diag;
+ //int diag_sign;
+ unsigned int x, y;
+ amg_point *pointx, *pointy;
+ unsigned int c_points = Pointvector[level].get_cpoints();
+
+ // Setup Prolongation/Interpolation matrix
+ P[level] = SparseMatrixType(A[level].size1(),c_points);
+ P[level].clear();
+
+ // Assign indices to C points
+ Pointvector[level].build_index();
+
+ // Direct Interpolation (Yang, p.14)
+#ifdef _OPENMP
+ #pragma omp parallel for private (pointx,pointy,row_sum,c_sum,temp_res,y,x,diag) shared (P,A,Pointvector,tag)
+#endif
+ for (x=0; x < Pointvector[level].size(); ++x)
+ {
+ pointx = Pointvector[level][x];
+ /*if (A[level](x,x) > 0)
+ diag_sign = 1;
+ else
+ diag_sign = -1;*/
+
+ // When the current line corresponds to a C point then the diagonal coefficient is 1 and the rest 0
+ if (pointx->is_cpoint())
+ P[level](x,pointx->get_coarse_index()) = 1;
+
+ // When the current line corresponds to a F point then the diagonal is 0 and the rest has to be computed (Yang, p.14)
+ if (pointx->is_fpoint())
+ {
+ // Jump to row x
+ InternalRowIterator row_iter = A[level].begin1();
+ row_iter += x;
+
+ // Row sum of coefficients (without diagonal) and sum of influencing C point coefficients has to be computed
+ row_sum = c_sum = diag = 0;
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ y = col_iter.index2();
+ if (x == y)// || *col_iter * diag_sign > 0)
+ {
+ diag += *col_iter;
+ continue;
+ }
+
+ // Sum all other coefficients in line x
+ row_sum += *col_iter;
+
+ pointy = Pointvector[level][y];
+ // Sum all coefficients that correspond to a strongly influencing C point
+ if (pointy->is_cpoint())
+ if (pointx->is_influencing(pointy))
+ c_sum += *col_iter;
+ }
+ temp_res = -row_sum/(c_sum*diag);
+
+ // Iterate over all strongly influencing points of point x
+ for (amg_point::iterator iter = pointx->begin_influencing(); iter != pointx->end_influencing(); ++iter)
+ {
+ pointy = *iter;
+ // The value is only non-zero for columns that correspond to a C point
+ if (pointy->is_cpoint())
+ {
+ if (temp_res != 0)
+ P[level](x, pointy->get_coarse_index()) = temp_res * A[level](x,pointy->get_index());
+ }
+ }
+
+ //Truncate interpolation if chosen
+ if (tag.get_interpolweight() != 0)
+ amg_truncate_row(P[level], x, tag);
+ }
+ }
+
+ // P test
+ //test_interpolation(A[level], P[level], Pointvector[level]);
+
+ #ifdef DEBUG
+ std::cout << "Prolongation Matrix:" << std::endl;
+ printmatrix (P[level]);
+ #endif
+ }
+ /** @brief Classical interpolation. Don't use with onepass classical coarsening or RS0 (Yang, p.14)! Multi-threaded! (VIENNACL_AMG_INTERPOL_CLASSIC)
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param P Prolongation matrices. P[level] is constructed
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_interpol_classic(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ ScalarType temp_res;
+ ScalarType weak_sum, strong_sum;
+ int diag_sign;
+ amg_sparsevector<ScalarType> c_sum_row;
+ amg_point *pointx, *pointy, *pointk, *pointm;
+ unsigned int x, y, k, m;
+
+ unsigned int c_points = Pointvector[level].get_cpoints();
+
+ // Setup Prolongation/Interpolation matrix
+ P[level] = SparseMatrixType(A[level].size1(), c_points);
+ P[level].clear();
+
+ // Assign indices to C points
+ Pointvector[level].build_index();
+
+ // Classical Interpolation (Yang, p.13-14)
+#ifdef _OPENMP
+ #pragma omp parallel for private (pointx,pointy,pointk,pointm,weak_sum,strong_sum,c_sum_row,temp_res,x,y,k,m,diag_sign) shared (A,P,Pointvector)
+#endif
+ for (x=0; x < Pointvector[level].size(); ++x)
+ {
+ pointx = Pointvector[level][x];
+ if (A[level](x,x) > 0)
+ diag_sign = 1;
+ else
+ diag_sign = -1;
+
+ // When the current line corresponds to a C point then the diagonal coefficient is 1 and the rest 0
+ if (pointx->is_cpoint())
+ P[level](x,pointx->get_coarse_index()) = 1;
+
+ // When the current line corresponds to a F point then the diagonal is 0 and the rest has to be computed (Yang, p.14)
+ if (pointx->is_fpoint())
+ {
+ // Jump to row x
+ InternalRowIterator row_iter = A[level].begin1();
+ row_iter += x;
+
+ weak_sum = 0;
+ c_sum_row = amg_sparsevector<ScalarType>(A[level].size1());
+ c_sum_row.clear();
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ k = col_iter.index2();
+ pointk = Pointvector[level][k];
+
+ // Sum of weakly influencing neighbors + diagonal coefficient
+ if (x == k || !pointx->is_influencing(pointk))// || *col_iter * diag_sign > 0)
+ {
+ weak_sum += *col_iter;
+ continue;
+ }
+
+ // Sums of coefficients in row k (strongly influening F neighbors) of C point neighbors of x are calculated
+ if (pointk->is_fpoint() && pointx->is_influencing(pointk))
+ {
+ for (amg_point::iterator iter = pointx->begin_influencing(); iter != pointx->end_influencing(); ++iter)
+ {
+ pointm = *iter;
+ m = pointm->get_index();
+
+ if (pointm->is_cpoint())
+ // Only use coefficients that have opposite sign of diagonal.
+ if (A[level](k,m) * diag_sign < 0)
+ c_sum_row[k] += A[level](k,m);
+ }
+ continue;
+ }
+ }
+
+ // Iterate over all strongly influencing points of point x
+ for (amg_point::iterator iter = pointx->begin_influencing(); iter != pointx->end_influencing(); ++iter)
+ {
+ pointy = *iter;
+ y = pointy->get_index();
+
+ // The value is only non-zero for columns that correspond to a C point
+ if (pointy->is_cpoint())
+ {
+ strong_sum = 0;
+ // Calculate term for strongly influencing F neighbors
+ for (typename amg_sparsevector<ScalarType>::iterator iter2 = c_sum_row.begin(); iter2 != c_sum_row.end(); ++iter2)
+ {
+ k = iter2.index();
+ // Only use coefficients that have opposite sign of diagonal.
+ if (A[level](k,y) * diag_sign < 0)
+ strong_sum += (A[level](x,k) * A[level](k,y)) / (*iter2);
+ }
+
+ // Calculate coefficient
+ temp_res = - (A[level](x,y) + strong_sum) / (weak_sum);
+ if (temp_res != 0)
+ P[level](x,pointy->get_coarse_index()) = temp_res;
+ }
+ }
+
+ //Truncate iteration if chosen
+ if (tag.get_interpolweight() != 0)
+ amg_truncate_row(P[level], x, tag);
+ }
+ }
+
+ #ifdef DEBUG
+ std::cout << "Prolongation Matrix:" << std::endl;
+ printmatrix (P[level]);
+ #endif
+ }
+
+ /** @brief Interpolation truncation (for VIENNACL_AMG_INTERPOL_DIRECT and VIENNACL_AMG_INTERPOL_CLASSIC)
+ *
+ * @param P Interpolation matrix
+ * @param row Row which has to be truncated
+ * @param tag AMG preconditioner tag
+ */
+ template <typename SparseMatrixType>
+ void amg_truncate_row(SparseMatrixType & P, unsigned int row, amg_tag & tag)
+ {
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ ScalarType row_max, row_min, row_sum_pos, row_sum_neg, row_sum_pos_scale, row_sum_neg_scale;
+
+ InternalRowIterator row_iter = P.begin1();
+ row_iter += row;
+
+ row_max = 0;
+ row_min = 0;
+ row_sum_pos = 0;
+ row_sum_neg = 0;
+
+ // Truncate interpolation by making values to zero that are a lot smaller than the biggest value in a row
+ // Determine max entry and sum of row (seperately for negative and positive entries)
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (*col_iter > row_max)
+ row_max = *col_iter;
+ if (*col_iter < row_min)
+ row_min = *col_iter;
+ if (*col_iter > 0)
+ row_sum_pos += *col_iter;
+ if (*col_iter < 0)
+ row_sum_neg += *col_iter;
+ }
+
+ row_sum_pos_scale = row_sum_pos;
+ row_sum_neg_scale = row_sum_neg;
+
+ // Make certain values to zero (seperately for negative and positive entries)
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (*col_iter > 0 && *col_iter < tag.get_interpolweight() * row_max)
+ {
+ row_sum_pos_scale -= *col_iter;
+ *col_iter = 0;
+ }
+ if (*col_iter < 0 && *col_iter > tag.get_interpolweight() * row_min)
+ {
+ row_sum_pos_scale -= *col_iter;
+ *col_iter = 0;
+ }
+ }
+
+ // Scale remaining values such that row sum is unchanged
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ if (*col_iter > 0)
+ *col_iter = *col_iter *(row_sum_pos/row_sum_pos_scale);
+ if (*col_iter < 0)
+ *col_iter = *col_iter *(row_sum_neg/row_sum_neg_scale);
+ }
+ }
+
+ /** @brief AG (aggregation based) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA)
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param P Prolongation matrices. P[level] is constructed
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_interpol_ag(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ unsigned int x;
+ amg_point *pointx, *pointy;
+ unsigned int c_points = Pointvector[level].get_cpoints();
+
+ P[level] = SparseMatrixType(A[level].size1(), c_points);
+ P[level].clear();
+
+ // Assign indices to C points
+ Pointvector[level].build_index();
+
+ // Set prolongation such that F point is interpolated (weight=1) by the aggregate it belongs to (Vanek et al p.6)
+#ifdef _OPENMP
+ #pragma omp parallel for private (x,pointx) shared (P)
+#endif
+ for (x=0; x<Pointvector[level].size(); ++x)
+ {
+ pointx = Pointvector[level][x];
+ pointy = Pointvector[level][pointx->get_aggregate()];
+ // Point x belongs to aggregate y.
+ P[level](x,pointy->get_coarse_index()) = 1;
+ }
+
+ #ifdef DEBUG
+ std::cout << "Aggregation based Prolongation:" << std::endl;
+ printmatrix(P[level]);
+ #endif
+ }
+
+ /** @brief SA (smoothed aggregate) interpolation. Multi-Threaded! (VIENNACL_INTERPOL_SA)
+ * @param level Coarse level identifier
+ * @param A Operator matrix on all levels
+ * @param P Prolongation matrices. P[level] is constructed
+ * @param Pointvector Vector of points on all levels
+ * @param tag AMG preconditioner tag
+ */
+ template <typename InternalType1, typename InternalType2>
+ void amg_interpol_sa(unsigned int level, InternalType1 & A, InternalType1 & P, InternalType2 & Pointvector, amg_tag & tag)
+ {
+ typedef typename InternalType1::value_type SparseMatrixType;
+ typedef typename InternalType2::value_type PointVectorType;
+ typedef typename SparseMatrixType::value_type ScalarType;
+ typedef typename SparseMatrixType::iterator1 InternalRowIterator;
+ typedef typename SparseMatrixType::iterator2 InternalColIterator;
+
+ unsigned int x,y;
+ ScalarType diag;
+ unsigned int c_points = Pointvector[level].get_cpoints();
+
+ InternalType1 P_tentative = InternalType1(P.size());
+ SparseMatrixType Jacobi = SparseMatrixType(A[level].size1(), A[level].size2());
+ Jacobi.clear();
+ P[level] = SparseMatrixType(A[level].size1(), c_points);
+ P[level].clear();
+
+ // Build Jacobi Matrix via filtered A matrix (Vanek et al. p.6)
+#ifdef _OPENMP
+ #pragma omp parallel for private (x,y,diag) shared (A,Pointvector)
+#endif
+ for (x=0; x<A[level].size1(); ++x)
+ {
+ diag = 0;
+ InternalRowIterator row_iter = A[level].begin1();
+ row_iter += x;
+ for (InternalColIterator col_iter = row_iter.begin(); col_iter != row_iter.end(); ++col_iter)
+ {
+ y = col_iter.index2();
+ // Determine the structure of the Jacobi matrix by using a filtered matrix of A:
+ // The diagonal consists of the diagonal coefficient minus all coefficients of points not in the neighborhood of x.
+ // All other coefficients are the same as in A.
+ // Already use Jacobi matrix to save filtered A matrix to speed up computation.
+ if (x == y)
+ diag += *col_iter;
+ else if (!Pointvector[level][x]->is_influencing(Pointvector[level][y]))
+ diag += -*col_iter;
+ else
+ Jacobi (x,y) = *col_iter;
+ }
+ InternalRowIterator row_iter2 = Jacobi.begin1();
+ row_iter2 += x;
+ // Traverse through filtered A matrix and compute the Jacobi filtering
+ for (InternalColIterator col_iter2 = row_iter2.begin(); col_iter2 != row_iter2.end(); ++col_iter2)
+ {
+ *col_iter2 = - tag.get_interpolweight()/diag * *col_iter2;
+ }
+ // Diagonal can be computed seperately.
+ Jacobi (x,x) = 1 - tag.get_interpolweight();
+ }
+
+ #ifdef DEBUG
+ std::cout << "Jacobi Matrix:" << std::endl;
+ printmatrix(Jacobi);
+ #endif
+
+ // Use AG interpolation as tentative prolongation
+ amg_interpol_ag(level, A, P_tentative, Pointvector, tag);
+
+ #ifdef DEBUG
+ std::cout << "Tentative Prolongation:" << std::endl;
+ printmatrix(P_tentative[level]);
+ #endif
+
+ // Multiply Jacobi matrix with tentative prolongation to get actual prolongation
+ amg_mat_prod(Jacobi,P_tentative[level],P[level]);
+
+ #ifdef DEBUG
+ std::cout << "Prolongation Matrix:" << std::endl;
+ printmatrix (P[level]);
+ #endif
+ }
+ } //namespace amg
+ }
+ }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/spai/block_matrix.hpp b/viennacl/linalg/detail/spai/block_matrix.hpp
new file mode 100644
index 0000000..2e35ff8
--- /dev/null
+++ b/viennacl/linalg/detail/spai/block_matrix.hpp
@@ -0,0 +1,90 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_BLOCK_MATRIX_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_BLOCK_MATRIX_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/tools/tools.hpp"
+
+/** @file viennacl/linalg/detail/spai/block_matrix.hpp
+ @brief Implementation of a bunch of (small) matrices on GPU. Experimental.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ /**
+ * @brief Represents a contigious matrices on GPU
+ */
+
+ class block_matrix{
+ public:
+ block_matrix(){
+
+ }
+ /**
+ * @brief Returns a handle to the elements
+ */
+ viennacl::ocl::handle<cl_mem>& handle(){ return _elements; }
+ /**
+ * @brief Returns a handle to the matrix dimensions
+ */
+ viennacl::ocl::handle<cl_mem>& handle1() { return _matrix_dimensions; }
+ /**
+ * @brief Returns a handle to the start indices of matrix
+ */
+ viennacl::ocl::handle<cl_mem>& handle2() { return _start_block_inds; }
+
+ /**
+ * @brief Returns a handle to the const elements
+ */
+ const viennacl::ocl::handle<cl_mem>& handle() const { return _elements; }
+ /**
+ * @brief Returns a handle to the const matrix dimensions
+ */
+ const viennacl::ocl::handle<cl_mem>& handle1() const { return _matrix_dimensions; }
+ /**
+ * @brief Returns a handle to the const start indices of matrix
+ */
+ const viennacl::ocl::handle<cl_mem>& handle2() const { return _start_block_inds; }
+ private:
+ //unsigned int _vectorIndex;
+ viennacl::ocl::handle<cl_mem> _elements;
+ viennacl::ocl::handle<cl_mem> _matrix_dimensions;
+ viennacl::ocl::handle<cl_mem> _start_block_inds;
+ };
+
+
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/block_vector.hpp b/viennacl/linalg/detail/spai/block_vector.hpp
new file mode 100644
index 0000000..6d78cea
--- /dev/null
+++ b/viennacl/linalg/detail/spai/block_vector.hpp
@@ -0,0 +1,78 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_BLOCK_VECTOR_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_BLOCK_VECTOR_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/tools/tools.hpp"
+
+/** @file viennacl/linalg/detail/spai/block_vector.hpp
+ @brief Implementation of a bunch of vectors on GPU. Experimental.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ /**
+ * @brief Represents a contigious vector on GPU
+ */
+
+ class block_vector{
+ public:
+ block_vector(){
+ }
+ /**
+ * @brief Return handle to the elements
+ */
+ viennacl::ocl::handle<cl_mem>& handle(){ return _elements; }
+ /**
+ * @brief Return handle to start indices
+ */
+ viennacl::ocl::handle<cl_mem>& handle1() { return _start_block_inds; }
+
+ /**
+ * @brief Return handle to the const elements
+ */
+ const viennacl::ocl::handle<cl_mem>& handle() const { return _elements; }
+ /**
+ * @brief Return handle to const start indices
+ */
+ const viennacl::ocl::handle<cl_mem>& handle1() const { return _start_block_inds; }
+ private:
+ //unsigned int _vectorIndex;
+ viennacl::ocl::handle<cl_mem> _elements;
+ viennacl::ocl::handle<cl_mem> _start_block_inds;
+ };
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/fspai.hpp b/viennacl/linalg/detail/spai/fspai.hpp
new file mode 100644
index 0000000..e33b31b
--- /dev/null
+++ b/viennacl/linalg/detail/spai/fspai.hpp
@@ -0,0 +1,406 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_FSPAI_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_FSPAI_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+
+//boost includes
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+//#include <omp.h>
+
+/** @file viennacl/linalg/detail/spai/fspai.hpp
+ @brief Implementation of FSPAI. Experimental.
+*/
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ /** @brief A tag for FSPAI. Experimental.
+ * Contains values for the algorithm.
+ * Must be passed to spai_precond constructor
+ */
+ class fspai_tag{
+ /** @brief Constructor
+ * @param residual_norm_threshold Calculate until the norm of the residual falls below this threshold
+ * @param iteration_limit maximum number of iterations
+ * @param is_static determines if static version of SPAI should be used
+ * @param is_right determines if left or right preconditioner should be used
+ */
+ public:
+ fspai_tag(
+ double residual_norm_threshold = 1e-3,
+ unsigned int iteration_limit = 5,
+ bool is_static = false,
+ bool is_right = false) :
+ _residual_norm_threshold(residual_norm_threshold),
+ _iteration_limit(iteration_limit),
+ _is_static(is_static),
+ _is_right(is_right){};
+
+ inline const double getResidualNormThreshold() const
+ { return _residual_norm_threshold; }
+ inline const unsigned long getIterationLimit () const
+ { return _iteration_limit; }
+ inline const bool getIsStatic() const
+ { return _is_static; }
+ inline const bool getIsRight() const
+ { return _is_right; }
+ inline void setResidualNormThreshold(double residual_norm_threshold){
+ if(residual_norm_threshold > 0)
+ _residual_norm_threshold = residual_norm_threshold;
+ }
+ inline void setIterationLimit(unsigned long iteration_limit){
+ if(iteration_limit > 0)
+ _iteration_limit = iteration_limit;
+ }
+ inline void setIsRight(bool is_right){
+ _is_right = is_right;
+ }
+ inline void setIsStatic(bool is_static){
+ _is_static = is_static;
+ }
+
+ private:
+ double _residual_norm_threshold;
+ unsigned long _iteration_limit;
+ bool _is_static;
+ bool _is_right;
+ };
+
+
+ //
+ // Helper: Store A in an STL container of type, exploiting symmetry
+ // Reason: ublas interface does not allow to iterate over nonzeros of a particular row without starting an iterator1 from the very beginning of the matrix...
+ //
+ template <typename MatrixType, typename ScalarType>
+ void sym_sparse_matrix_to_stl(MatrixType const & A, std::vector<std::map<unsigned int, ScalarType> > & STL_A)
+ {
+ STL_A.resize(A.size1());
+ for (typename MatrixType::const_iterator1 row_it = A.begin1();
+ row_it != A.end1();
+ ++row_it)
+ {
+ for (typename MatrixType::const_iterator2 col_it = row_it.begin();
+ col_it != row_it.end();
+ ++col_it)
+ {
+ if (col_it.index1() >= col_it.index2())
+ STL_A[col_it.index1()][col_it.index2()] = *col_it;
+ else
+ break; //go to next row
+ }
+ }
+ }
+
+
+ //
+ // Generate index sets J_k, k=0,...,N-1
+ //
+ template <typename MatrixType>
+ void generateJ(MatrixType const & A, std::vector<std::vector<size_t> > & J)
+ {
+ for (typename MatrixType::const_iterator1 row_it = A.begin1();
+ row_it != A.end1();
+ ++row_it)
+ {
+ for (typename MatrixType::const_iterator2 col_it = row_it.begin();
+ col_it != row_it.end();
+ ++col_it)
+ {
+ if (col_it.index1() > col_it.index2()) //Matrix is symmetric, thus only work on lower triangular part
+ {
+ J[col_it.index2()].push_back(col_it.index1());
+ J[col_it.index1()].push_back(col_it.index2());
+ }
+ else
+ break; //go to next row
+ }
+ }
+ }
+
+
+ //
+ // Extracts the blocks A(\tilde{J}_k, \tilde{J}_k) from A
+ // Sets up y_k = A(\tilde{J}_k, k) for the inplace-solution after Cholesky-factoriation
+ //
+ template <typename ScalarType, typename MatrixType, typename VectorType>
+ void fill_blocks(std::vector< std::map<unsigned int, ScalarType> > & A,
+ std::vector<MatrixType> & blocks,
+ std::vector<std::vector<size_t> > const & J,
+ std::vector<VectorType> & Y)
+ {
+ for (size_t k=0; k<A.size(); ++k)
+ {
+ std::vector<size_t> const & Jk = J[k];
+ VectorType & yk = Y[k];
+ MatrixType & block_k = blocks[k];
+
+ yk.resize(Jk.size());
+ block_k.resize(Jk.size(), Jk.size());
+ block_k.clear();
+
+ for (size_t i=0; i<Jk.size(); ++i)
+ {
+ size_t row_index = Jk[i];
+ std::map<unsigned int, ScalarType> & A_row = A[row_index];
+
+ //fill y_k:
+ yk[i] = A_row[k];
+
+ for (size_t j=0; j<Jk.size(); ++j)
+ {
+ size_t col_index = Jk[j];
+ if (col_index <= row_index && A_row.find(col_index) != A_row.end()) //block is symmetric, thus store only lower triangular part
+ block_k(i, j) = A_row[col_index];
+ }
+ }
+ }
+ }
+
+
+ //
+ // Perform Cholesky factorization of A inplace. Cf. Schwarz: Numerische Mathematik, vol 5, p. 58
+ //
+ template <typename MatrixType>
+ void cholesky_decompose(MatrixType & A)
+ {
+ for (size_t k=0; k<A.size2(); ++k)
+ {
+ if (A(k,k) <= 0)
+ {
+ std::cout << "k: " << k << std::endl;
+ std::cout << "A(k,k): " << A(k,k) << std::endl;
+ }
+
+ assert(A(k,k) > 0);
+
+ A(k,k) = std::sqrt(A(k,k));
+
+ for (size_t i=k+1; i<A.size1(); ++i)
+ {
+ A(i,k) /= A(k,k);
+ for (size_t j=k+1; j<=i; ++j)
+ A(i,j) -= A(i,k) * A(j,k);
+ }
+ }
+ }
+
+
+ //
+ // Compute x in Ax = b, where A is already Cholesky factored (A = L L^T)
+ //
+ template <typename MatrixType, typename VectorType>
+ void cholesky_solve(MatrixType const & L, VectorType & b)
+ {
+ typedef typename VectorType::value_type ScalarType;
+
+ // inplace forward solve L x = b
+ for (size_t i=0; i<L.size1(); ++i)
+ {
+ for (size_t j=0; j<i; ++j)
+ b[i] -= L(i,j) * b[j];
+ b[i] /= L(i,i);
+ }
+
+ // inplace backward solve L^T x = b:
+ for (size_t i=L.size1()-1; ; --i)
+ {
+ for (size_t k=i+1; k<L.size1(); ++k)
+ b[i] -= L(k,i) * b[k];
+ b[i] /= L(i,i);
+
+ if (i==0) //size_t might be unsigned, therefore manual check for equality with zero here
+ break;
+ }
+ }
+
+
+
+ //
+ // Compute the Cholesky factor L from the sparse vectors y_k
+ //
+ template <typename MatrixType, typename VectorType1>
+ void computeL(MatrixType const & A,
+ MatrixType & L,
+ MatrixType & L_trans,
+ std::vector<VectorType1> & Y,
+ std::vector<std::vector<size_t> > & J)
+ {
+ typedef typename VectorType1::value_type ScalarType;
+ typedef std::vector<std::map<unsigned int, ScalarType> > STLSparseMatrixType;
+
+ STLSparseMatrixType L_temp(A.size1());
+
+ for (size_t k=0; k<A.size1(); ++k)
+ {
+ std::vector<size_t> const & Jk = J[k];
+ VectorType1 const & yk = Y[k];
+
+ //compute L(k,k):
+ ScalarType Lkk = A(k,k);
+ for (size_t i=0; i<Jk.size(); ++i)
+ Lkk -= A(Jk[i],k) * yk[i];
+
+ Lkk = 1.0 / sqrt(Lkk);
+ L_temp[k][k] = Lkk;
+ L_trans(k,k) = Lkk;
+
+ //write lower diagonal entries:
+ for (size_t i=0; i<Jk.size(); ++i)
+ {
+ L_temp[Jk[i]][k] = -Lkk * yk[i];
+ L_trans(k, Jk[i]) = -Lkk * yk[i];
+ }
+ } //for k
+
+
+ //build L from L_temp
+ for (size_t i=0; i<L_temp.size(); ++i)
+ for (typename std::map<unsigned int, ScalarType>::const_iterator it = L_temp[i].begin();
+ it != L_temp[i].end();
+ ++it)
+ L(i, it->first) = it->second;
+ }
+
+
+ //
+ // Top level FSPAI function
+ //
+ template <typename MatrixType>
+ void computeFSPAI(MatrixType const & A,
+ MatrixType const & PatternA,
+ MatrixType & L,
+ MatrixType & L_trans,
+ fspai_tag const & tag)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+ typedef boost::numeric::ublas::matrix<ScalarType> DenseMatrixType;
+ typedef std::vector<std::map<unsigned int, ScalarType> > SparseMatrixType;
+
+ //
+ // preprocessing: Store A in a STL container:
+ //
+ //std::cout << "Transferring to STL container:" << std::endl;
+ std::vector<std::vector<ScalarType> > y_k(A.size1());
+ SparseMatrixType STL_A(A.size1());
+ sym_sparse_matrix_to_stl(A, STL_A);
+
+
+ //
+ // Step 1: Generate pattern indices
+ //
+ //std::cout << "computeFSPAI(): Generating pattern..." << std::endl;
+ std::vector<std::vector<size_t> > J(A.size1());
+ generateJ(PatternA, J);
+
+ //
+ // Step 2: Set up matrix blocks
+ //
+ //std::cout << "computeFSPAI(): Setting up matrix blocks..." << std::endl;
+ std::vector<DenseMatrixType> subblocks_A(A.size1());
+ fill_blocks(STL_A, subblocks_A, J, y_k);
+ STL_A.clear(); //not needed anymore
+
+ //
+ // Step 3: Cholesky-factor blocks
+ //
+ //std::cout << "computeFSPAI(): Cholesky-factorization..." << std::endl;
+ for (size_t i=0; i<subblocks_A.size(); ++i)
+ {
+ //std::cout << "Block before: " << subblocks_A[i] << std::endl;
+ cholesky_decompose(subblocks_A[i]);
+ //std::cout << "Block after: " << subblocks_A[i] << std::endl;
+ }
+
+
+ /*size_t num_bytes = 0;
+ for (size_t i=0; i<subblocks_A.size(); ++i)
+ num_bytes += 8*subblocks_A[i].size1()*subblocks_A[i].size2();*/
+ //std::cout << "Memory for FSPAI matrix: " << num_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+
+ //
+ // Step 4: Solve for y_k
+ //
+ //std::cout << "computeFSPAI(): Cholesky-solve..." << std::endl;
+ for (size_t i=0; i<y_k.size(); ++i)
+ {
+ if (subblocks_A[i].size1() > 0) //block might be empty...
+ {
+ //y_k[i].resize(subblocks_A[i].size1());
+ //std::cout << "y_k[" << i << "]: ";
+ //for (size_t j=0; j<y_k[i].size(); ++j)
+ // std::cout << y_k[i][j] << " ";
+ //std::cout << std::endl;
+ cholesky_solve(subblocks_A[i], y_k[i]);
+ }
+ }
+
+
+ //
+ // Step 5: Set up Cholesky factors L and L_trans
+ //
+ //std::cout << "computeFSPAI(): Computing L..." << std::endl;
+ L.resize(A.size1(), A.size2(), false);
+ L.reserve(A.nnz(), false);
+ L_trans.resize(A.size1(), A.size2(), false);
+ L_trans.reserve(A.nnz(), false);
+ computeL(A, L, L_trans, y_k, J);
+
+ //std::cout << "L: " << L << std::endl;
+ }
+
+
+
+ }
+ }
+ }
+}
+
+#endif
diff --git a/viennacl/linalg/detail/spai/qr.hpp b/viennacl/linalg/detail/spai/qr.hpp
new file mode 100644
index 0000000..bc80f71
--- /dev/null
+++ b/viennacl/linalg/detail/spai/qr.hpp
@@ -0,0 +1,438 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_QR_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_QR_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/qr.hpp
+ @brief Implementation of a simultaneous QR factorization of multiple matrices. Experimental.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <cmath>
+#include <sstream>
+#include "viennacl/ocl/backend.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+//#include "boost/thread/thread.hpp"
+
+#include "viennacl/vector.hpp"
+#include "viennacl/matrix.hpp"
+
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+
+
+ //********** DEBUG FUNCTIONS *****************//
+ template< typename T, typename InputIterator>
+ void Print(std::ostream& ostr, InputIterator it_begin, InputIterator it_end){
+ //std::ostream_iterator<int> it_os(ostr, delimiter);
+ std::string delimiters = " ";
+ std::copy(it_begin, it_end, std::ostream_iterator<T>(ostr, delimiters.c_str()));
+ ostr<<std::endl;
+ }
+
+ template<typename VectorType, typename MatrixType>
+ void write_to_block(VectorType& con_A_I_J, unsigned int start_ind, const std::vector<unsigned int>& I, const std::vector<unsigned int>& J, MatrixType& m){
+ m.resize(I.size(), J.size(), false);
+ for(size_t i = 0; i < J.size(); ++i){
+ for(size_t j = 0; j < I.size(); ++j){
+ m(j,i) = con_A_I_J[start_ind + i*I.size() + j];
+ }
+ }
+ }
+
+ template<typename VectorType>
+ void print_continious_matrix(VectorType& con_A_I_J, std::vector<cl_uint>& blocks_ind,
+ const std::vector<std::vector<unsigned int> >& g_I, const std::vector<std::vector<unsigned int> >& g_J){
+ typedef typename VectorType::value_type ScalarType;
+ std::vector<boost::numeric::ublas::matrix<ScalarType> > com_A_I_J(g_I.size());
+ for(size_t i = 0; i < g_I.size(); ++i){
+ write_to_block( con_A_I_J, blocks_ind[i], g_I[i], g_J[i], com_A_I_J[i]);
+ std::cout<<com_A_I_J[i]<<std::endl;
+ }
+ }
+ template<typename VectorType>
+ void print_continious_vector(VectorType& con_v, std::vector<cl_uint>& block_ind, const std::vector<std::vector<unsigned int> >& g_J){
+ typedef typename VectorType::value_type ScalarType;
+ std::vector<boost::numeric::ublas::vector<ScalarType> > com_v(g_J.size());
+ //Print<ScalarType>(std::cout, con_v.begin(), con_v.end());
+ for(size_t i = 0; i < g_J.size(); ++i){
+ com_v[i].resize(g_J[i].size());
+ for(size_t j = 0; j < g_J[i].size(); ++j){
+ com_v[i](j) = con_v[block_ind[i] + j];
+ }
+ std::cout<<com_v[i]<<std::endl;
+ }
+ }
+
+ ///**************************************** BLOCK FUNCTIONS ************************************//
+ /** @brief Computes size of elements, start indices and matrix dimensions for a certain block
+ * @param g_I container of row indices
+ * @param g_J container of column indices
+ * @param sz general size for all elements in a certain block
+ * @param blocks_ind start indices in a certain
+ * @param matrix_dims matrix dimensions for each block
+ */
+ void compute_blocks_size(const std::vector<std::vector<unsigned int> >& g_I, const std::vector<std::vector<unsigned int> >& g_J,
+ unsigned int& sz, std::vector<cl_uint>& blocks_ind, std::vector<cl_uint>& matrix_dims){
+ sz = 0;
+ for(size_t i = 0; i < g_I.size(); ++i){
+ sz += static_cast<unsigned int>(g_I[i].size()*g_J[i].size());
+ matrix_dims[2*i] = static_cast<cl_uint>(g_I[i].size());
+ matrix_dims[2*i + 1] = static_cast<cl_uint>(g_J[i].size());
+ blocks_ind[i+1] = blocks_ind[i] + static_cast<cl_uint>(g_I[i].size()*g_J[i].size());
+
+ }
+ }
+ /** @brief Computes size of particular container of index set
+ * @param inds container of index sets
+ * @param size output size
+ */
+ void get_size(const std::vector<std::vector<unsigned int> >& inds, unsigned int& size){
+ size = 0;
+ for (size_t i = 0; i < inds.size(); ++i) {
+ size += static_cast<unsigned int>(inds[i].size());
+ }
+ }
+
+ /** @brief Initializes start indices of particular index set
+ * @param inds container of index sets
+ * @param start_inds output index set
+ */
+ void init_start_inds(const std::vector<std::vector<unsigned int> >& inds, std::vector<cl_uint>& start_inds){
+ for(size_t i = 0; i < inds.size(); ++i){
+ start_inds[i+1] = start_inds[i] + static_cast<cl_uint>(inds[i].size());
+ }
+ }
+
+ //************************************* QR FUNCTIONS ***************************************//
+ /** @brief Dot prod of particular column of martix A with it's self starting at a certain index beg_ind
+ * @param A init matrix
+ * @param beg_ind starting index
+ * @param res result of dot product
+ */
+ template<typename MatrixType, typename ScalarType>
+ void dot_prod(const MatrixType& A, unsigned int beg_ind, ScalarType& res){
+ res = static_cast<ScalarType>(0);
+ for(size_t i = beg_ind; i < A.size1(); ++i){
+ res += A(i, beg_ind-1)*A(i, beg_ind-1);
+ }
+ }
+ /** @brief Dot prod of particular matrix column with arbitrary vector: A(:, col_ind)
+ * @param A init matrix
+ * @param v input vector
+ * @param col_ind starting column index
+ * @param start_ind starting index inside column
+ * @param res result of dot product
+ */
+ template<typename MatrixType, typename VectorType, typename ScalarType>
+ void custom_inner_prod(const MatrixType& A, const VectorType& v, unsigned int col_ind, unsigned int start_ind, ScalarType& res){
+ res = static_cast<ScalarType>(0);
+ for(unsigned int i = start_ind; i < static_cast<unsigned int>(A.size1()); ++i){
+ res += A(i, col_ind)*v(i);
+ }
+ }
+
+ /** @brief Copying part of matrix column
+ * @param A init matrix
+ * @param v output vector
+ * @param beg_ind start index for copying
+ */
+ template<typename MatrixType, typename VectorType>
+ void copy_vector(const MatrixType & A, VectorType & v, const unsigned int beg_ind){
+ for(unsigned int i = beg_ind; i < static_cast<unsigned int>(A.size1()); ++i){
+ v(i) = A( i, beg_ind-1);
+ }
+ }
+
+ //householder reflection c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.210
+ /** @brief Coputation of Householder vector, householder reflection c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.210
+ * @param A init matrix
+ * @param j start index for computations
+ * @param v output Householder vector
+ * @param b beta
+ */
+ template<typename MatrixType, typename VectorType, typename ScalarType>
+ void householder_vector(const MatrixType& A, unsigned int j, VectorType& v, ScalarType& b){
+ ScalarType sg;
+ //
+ dot_prod(A, j+1, sg);
+ copy_vector(A, v, j+1);
+ ScalarType mu;
+ v(j) = static_cast<ScalarType>(1.0);
+ if(sg == 0){
+ b = 0;
+ }
+ else{
+ mu = std::sqrt(A(j,j)*A(j, j) + sg);
+ if(A(j, j) <= 0){
+ v(j) = A(j, j) - mu;
+ }else{
+ v(j) = -sg/(A(j, j) + mu);
+ }
+ b = 2*(v(j)*v(j))/(sg + v(j)*v(j));
+ v = v/v(j);
+ }
+ }
+ /** @brief Inplace application of Householder vector to a matrix A
+ * @param A init matrix
+ * @param iter_cnt current iteration
+ * @param v Householder vector
+ * @param b beta
+ */
+ template<typename MatrixType, typename VectorType, typename ScalarType>
+ void apply_householder_reflection(MatrixType& A, unsigned int iter_cnt, VectorType& v, ScalarType b){
+ //update every column of matrix A
+ ScalarType in_prod_res;
+ for(unsigned int i = iter_cnt; i < static_cast<unsigned int>(A.size2()); ++i){
+ //update each column in a fashion: ai = ai - b*v*(v'*ai)
+ custom_inner_prod(A, v, i, iter_cnt, in_prod_res);
+ for(unsigned int j = iter_cnt; j < static_cast<unsigned int>(A.size1()); ++j){
+ A(j, i) -= b*in_prod_res*v(j);
+ }
+ }
+ }
+
+ /** @brief Storage of vector v in column(A, ind), starting from ind-1 index of a column
+ * @param A init matrix
+ * @param ind index of a column
+ * @param v vector that should be stored
+ */
+ template<typename MatrixType, typename VectorType>
+ void store_householder_vector(MatrixType& A, unsigned int ind, VectorType& v){
+ for(unsigned int i = ind; i < static_cast<unsigned int>(A.size1()); ++i){
+ A(i, ind-1) = v(i);
+ }
+ }
+
+
+ //QR algorithm
+ /** @brief Inplace QR factorization via Householder reflections c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.224
+ * @param R input matrix
+ * @param b_v vector of betas
+ */
+ template<typename MatrixType, typename VectorType>
+ void single_qr(MatrixType& R, VectorType& b_v){
+ typedef typename MatrixType::value_type ScalarType;
+ if((R.size1() > 0) && (R.size2() > 0)){
+ VectorType v = (VectorType)boost::numeric::ublas::zero_vector<ScalarType>(R.size1());
+ b_v = (VectorType)boost::numeric::ublas::zero_vector<ScalarType>(R.size2());
+ for(unsigned int i = 0; i < static_cast<unsigned int>(R.size2()); ++i){
+ householder_vector(R, i, v, b_v[i]);
+ apply_householder_reflection(R, i, v, b_v[i]);
+ if(i < R.size1()) store_householder_vector(R, i+1, v);
+ }
+ }
+ }
+
+ //********************** HELP FUNCTIONS FOR GPU-based QR factorization *************************//
+ /** @brief Reading from text file into string
+ * @param file_name file name
+ * @param kernel_source string that contains file
+ */
+ void read_kernel_from_file(std::string& file_name, std::string& kernel_source){
+ std::ifstream ifs(file_name.c_str(), std::ifstream::in);
+
+ if (!ifs)
+ std::cerr << "WARNING: Cannot open file " << file_name << std::endl;
+
+ std::string line;
+ std::ostringstream ost;
+ while (std::getline(ifs, line)) {
+ ost<<line<<std::endl;
+ }
+ kernel_source = ost.str();
+ }
+
+ /** @brief Getting max size of rows/columns from container of index set
+ * @param inds container of index set
+ * @param max_size max size that corresponds to that container
+ */
+ void get_max_block_size(const std::vector<std::vector<unsigned int> >& inds, unsigned int& max_size){
+ max_size = 0;
+ for(unsigned int i = 0; i < inds.size(); ++i){
+ if(inds[i].size() > max_size){
+ max_size = static_cast<unsigned int>(inds[i].size());
+ }
+ }
+ }
+
+ /** @brief Dot_prod(column(A, ind), v) starting from index ind+1
+ * @param A input matrix
+ * @param v input vector
+ * @param ind index
+ * @param res result value
+ */
+ template<typename MatrixType, typename VectorType, typename ScalarType>
+ void custom_dot_prod(const MatrixType& A, const VectorType& v, unsigned int ind, ScalarType& res){
+ res = static_cast<ScalarType>(0);
+ for(unsigned int j = ind; j < A.size1(); ++j){
+ if(j == ind){
+ res += v(j);
+ }else{
+ res += A(j, ind)*v(j);
+ }
+ }
+ }
+
+ /** @brief Recovery Q from matrix R and vector of betas b_v
+ * @param R input matrix
+ * @param b_v vector of betas
+ * @param y output vector
+ */
+ template<typename MatrixType, typename VectorType>
+ void apply_q_trans_vec(const MatrixType& R, const VectorType& b_v, VectorType& y){
+ typedef typename MatrixType::value_type ScalarType;
+ ScalarType inn_prod = static_cast<ScalarType>(0);
+ for(size_t i = 0; i < R.size2(); ++i){
+ custom_dot_prod(R, y, static_cast<unsigned int>(i), inn_prod);
+ for(size_t j = i; j < R.size1(); ++j){
+ if(i == j){
+ y(j) -= b_v(i)*inn_prod;
+ }
+ else{
+ y(j) -= b_v(i)*inn_prod*R(j,i);
+ }
+ }
+ }
+ }
+
+ /** @brief Multiplication of Q'*A, where Q is in implicit for lower part of R and vector of betas - b_v
+ * @param R input matrix
+ * @param b_v vector of betas
+ * @param A output matrix
+ */
+ template<typename MatrixType, typename VectorType>
+ void apply_q_trans_mat(const MatrixType& R, const VectorType& b_v, MatrixType& A){
+ VectorType tmp_v;
+ for(size_t i = 0; i < A.size2(); ++i){
+ tmp_v = (VectorType)column(A,i);
+ apply_q_trans_vec(R, b_v, tmp_v);
+ column(A,i) = tmp_v;
+ }
+ }
+
+ //parallel QR for GPU
+ /** @brief Inplace QR factorization via Householder reflections c.f. Gene H. Golub, Charles F. Van Loan "Matrix Computations" 3rd edition p.224 performed
+ on GPU
+ * @param g_I container of row indices
+ * @param g_J container of column indices
+ * @param g_A_I_J_vcl contigious matrices, GPU memory is used
+ * @param g_bv_vcl contigios vectors beta, GPU memory is used
+ * @param g_is_update container of indicators that show active blocks
+ * @param cur_iter current iteration
+ */
+ template<typename ScalarType>
+ void block_qr(std::vector<std::vector<unsigned int> >& g_I,
+ std::vector<std::vector<unsigned int> >& g_J,
+ block_matrix& g_A_I_J_vcl,
+ block_vector& g_bv_vcl,
+ std::vector<cl_uint>& g_is_update,
+ const unsigned int cur_iter){
+ //typedef typename MatrixType::value_type ScalarType;
+ unsigned int bv_size;
+ unsigned int v_size;
+ //set up arguments for GPU
+ //find maximum size of rows/columns
+ unsigned int local_r_n, local_c_n;
+ //find max size for blocks
+ get_max_block_size(g_I, local_r_n);
+ get_max_block_size(g_J, local_c_n);
+ //get size
+ get_size(g_J, bv_size);
+ get_size(g_I, v_size);
+ //get start indices
+ std::vector<cl_uint> start_bv_inds(g_I.size() + 1, 0);
+ std::vector<cl_uint> start_v_inds(g_I.size() + 1, 0);
+ init_start_inds(g_J, start_bv_inds);
+ init_start_inds(g_I, start_v_inds);
+ //init arrays
+ std::vector<ScalarType> b_v(bv_size, static_cast<ScalarType>(0));
+ std::vector<ScalarType> v(v_size, static_cast<ScalarType>(0));
+ //call qr program
+ block_vector v_vcl;
+ /*if(cur_iter == 0)
+ {
+ //if first run - compile the program
+ std::string qr_kernel_file_name = "kernels/spai/qr3_a_n.cl";
+ std::string qr_kernel_source;
+ read_kernel_from_file(qr_kernel_file_name, qr_kernel_source);
+ viennacl::ocl::program & qr_prog = viennacl::ocl::current_context().add_program(qr_kernel_source.c_str(), "qr_kernel_source");
+ qr_prog.add_kernel("block_qr");
+ //
+ }*/
+
+ g_bv_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*bv_size),
+ &(b_v[0]));
+
+ v_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*v_size),
+ &(v[0]));
+ //the same as j_start_inds
+ g_bv_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*g_I.size()),
+ &(start_bv_inds[0]));
+
+ v_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*g_I.size()),
+ &(start_v_inds[0]));
+ viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*g_is_update.size()),
+ &(g_is_update[0]));
+ //local memory
+ //viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));
+ viennacl::ocl::kernel& qr_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_qr");
+ qr_kernel.local_work_size(0, local_c_n);
+ qr_kernel.global_work_size(0, 256);
+ viennacl::ocl::enqueue(qr_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle1(), g_bv_vcl.handle(),
+ v_vcl.handle(), g_A_I_J_vcl.handle2(),
+ g_bv_vcl.handle1(), v_vcl.handle1(), g_is_update_vcl,
+ viennacl::ocl::local_mem(static_cast<unsigned int>(sizeof(ScalarType)*(local_r_n*local_c_n))),
+ static_cast<cl_uint>(g_I.size())));
+
+ }
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/small_matrix.hpp b/viennacl/linalg/detail/spai/small_matrix.hpp
new file mode 100644
index 0000000..fbb0ce4
--- /dev/null
+++ b/viennacl/linalg/detail/spai/small_matrix.hpp
@@ -0,0 +1,109 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SMALL_MATRIX_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SMALL_MATRIX_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/small_matrix.hpp
+ @brief Implementation of a routines for small matrices (helper for SPAI). Experimental in 1.2.x.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+
+
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ //
+ // Constructs an orthonormal sparse matrix M (with M^T M = Id). Is composed of elementary 2x2 rotation matrices with suitable renumbering.
+ //
+ template <typename MatrixType>
+ void make_rotation_matrix(MatrixType & mat, size_t new_size, size_t off_diagonal_distance = 4)
+ {
+ mat.resize(new_size, new_size, false);
+ mat.clear();
+
+ double val = 1 / sqrt(2.0);
+
+ for (size_t i=0; i<new_size; ++i)
+ mat(i,i) = val;
+
+ for (size_t i=off_diagonal_distance; i<new_size; ++i)
+ {
+ mat(i-off_diagonal_distance, i) = val; mat(i, i-off_diagonal_distance) = -val;
+ }
+
+ }
+
+
+ //calcualtes matrix determinant
+ template <typename MatrixType>
+ double determinant(boost::numeric::ublas::matrix_expression<MatrixType> const& mat_r)
+ {
+ double det = 1.0;
+
+ MatrixType mLu(mat_r() );
+ boost::numeric::ublas::permutation_matrix<std::size_t> pivots(mat_r().size1() );
+
+ int is_singular = static_cast<int>(lu_factorize(mLu, pivots));
+
+ if (!is_singular)
+ {
+ for (std::size_t i=0; i < pivots.size(); ++i)
+ {
+ if (pivots(i) != i)
+ det *= -1.0;
+
+ det *= mLu(i,i);
+ }
+ }
+ else
+ det = 0.0;
+
+ return det;
+ }
+
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai-dynamic.hpp b/viennacl/linalg/detail/spai/spai-dynamic.hpp
new file mode 100644
index 0000000..734ddc3
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai-dynamic.hpp
@@ -0,0 +1,654 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_DYNAMIC_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_DYNAMIC_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/spai-dynamic.hpp
+ @brief Implementation of a dynamic SPAI. Provides the routines for automatic pattern updates Experimental in 1.2.x.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+//#include "block_matrix.hpp"
+//#include "block_vector.hpp"
+//#include "benchmark-utils.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/ocl/backend.hpp"
+
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+#include "viennacl/linalg/detail/spai/qr.hpp"
+#include "viennacl/linalg/detail/spai/spai_tag.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ typedef std::pair<unsigned int, double> PairT;
+ struct CompareSecond{
+ bool operator()(const PairT& left, const PairT& right)
+ {
+ return static_cast<double>(left.second) > static_cast<double>(right.second);
+ }
+ };
+
+
+ /** @brief Initializes Dense matrix from sparse one
+ * @param A_in Riginal sparse matrix
+ * @param J Set of column indices
+ * @param I Set of row indices
+ * @param A_out dense matrix output
+ */
+ template<typename SparseMatrixType, typename DenseMatrixType>
+ void initProjectSubMatrix(const SparseMatrixType& A_in, const std::vector<unsigned int>& J, std::vector<unsigned int>& I,
+ DenseMatrixType& A_out){
+ typedef typename DenseMatrixType::value_type ScalarType;
+ A_out.resize(I.size(), J.size(), false);
+ for(size_t j = 0; j < J.size(); ++j){
+ for(size_t i = 0; i < I.size(); ++i){
+ A_out(i,j) = A_in(I[i],J[j]);
+ }
+ }
+ }
+
+ /** @brief Determines if element ind is in set {J}
+ * @param J current set
+ * @param ind current element
+ */
+ bool isInIndexSet(const std::vector<unsigned int>& J, const unsigned int& ind){
+ return (std::find(J.begin(), J.end(), ind) != J.end());
+ }
+
+ /** @brief Composition of new matrix R, that is going to be used in Least Square problem solving
+ * @param A matrix Q'*A(I, \\tilde J), where \\tilde J - set of new column indices
+ * @param R_n matrix A_Iu_J_u after QR factorization
+ * @param R previously composed matrix R
+ */
+ template<typename MatrixType>
+ void composeNewR(const MatrixType& A, const MatrixType& R_n, MatrixType& R){
+ typedef typename MatrixType::value_type ScalarType;
+ size_t row_n = R_n.size1() - (A.size1() - R.size2());
+ MatrixType C = boost::numeric::ublas::zero_matrix<ScalarType>(R.size1() + row_n, R.size2() + A.size2());
+ //write original R to new Composite R
+ boost::numeric::ublas::project(C, boost::numeric::ublas::range(0,R.size1()), boost::numeric::ublas::range(0, R.size2())) += R;
+ //write upper part of Q'*A_I_\hatJ, all columns and number of rows that equals to R.size2()
+ boost::numeric::ublas::project(C, boost::numeric::ublas::range(0, R.size2()), boost::numeric::ublas::range(R.size2(),
+ R.size2() + A.size2())) +=
+ boost::numeric::ublas::project(A, boost::numeric::ublas::range(0, R.size2()), boost::numeric::ublas::range(0, A.size2()));
+ //adding decomposed(QR) block to Composite R
+ if(R_n.size1() > 0 && R_n.size2() > 0)
+ boost::numeric::ublas::project(C, boost::numeric::ublas::range(R.size2(), R.size1() + row_n),
+ boost::numeric::ublas::range(R.size2(), R.size2() + A.size2())) += R_n;
+ R = C;
+ }
+
+ /** @brief Composition of new vector of coefficients beta from QR factorizations(necessary for Q recovery)
+ * @param v_n new vector from last QR factorization
+ * @param v composition of previous vectors from QR factorizations
+ */
+ template<typename VectorType>
+ void composeNewVector(const VectorType& v_n, VectorType& v){
+ typedef typename VectorType::value_type ScalarType;
+ VectorType w = boost::numeric::ublas::zero_vector<ScalarType>(v.size() + v_n.size());
+ boost::numeric::ublas::project(w, boost::numeric::ublas::range(0, v.size())) += v;
+ boost::numeric::ublas::project(w, boost::numeric::ublas::range(v.size(), v.size() + v_n.size())) += v_n;
+ v = w;
+ }
+
+ /** @brief Computation of Euclidean norm for sparse vector
+ * @param v initial sparse vector
+ * @param norm scalar that represents Euclidean norm
+ */
+ template<typename SparseVectorType, typename ScalarType>
+ void sparse_norm_2(const SparseVectorType& v, ScalarType& norm){
+ for(typename SparseVectorType::const_iterator vec_it = v.begin(); vec_it != v.end(); ++vec_it){
+ norm += (vec_it->second)*(vec_it->second);
+ }
+ norm = std::sqrt(norm);
+ }
+
+ /** @brief Dot product of two sparse vectors
+ * @param v1 initial sparse vector
+ * @param v2 initial sparse vector
+ * @param res_v scalar that represents dot product result
+ */
+ template<typename SparseVectorType, typename ScalarType>
+ void sparse_inner_prod(const SparseVectorType& v1, const SparseVectorType& v2, ScalarType& res_v){
+ typename SparseVectorType::const_iterator v_it1 = v1.begin();
+ typename SparseVectorType::const_iterator v_it2 = v2.begin();
+ while((v_it1 != v1.end())&&(v_it2 != v2.end())){
+ if(v_it1->first == v_it2->first){
+ res_v += (v_it1->second)*(v_it2->second);
+ ++v_it1;
+ ++v_it2;
+ }
+ else if(v_it1->first < v_it2->first){
+ ++v_it1;
+ }
+ else
+ ++v_it2;
+
+
+ }
+ }
+
+ /** @brief Building a new set of column indices J_u, cf. Kallischko dissertation p.31
+ * @param A_v_c vectorized column-wise initial matrix
+ * @param res residual vector
+ * @param J set of column indices
+ * @param J_u set of new column indices
+ * @param tag SPAI tag with parameters
+ */
+ template <typename SparseVectorType, typename ScalarType>
+ bool buildAugmentedIndexSet(const std::vector<SparseVectorType>& A_v_c,
+ const SparseVectorType& res,
+ std::vector<unsigned int>& J,
+ std::vector<unsigned int>& J_u,
+ const spai_tag& tag){
+ std::vector<std::pair<unsigned int, ScalarType> > p;
+ size_t cur_size = 0;
+ ScalarType inprod, norm2;
+ //print_sparse_vector(res);
+ for(typename SparseVectorType::const_iterator res_it = res.begin(); res_it != res.end(); ++res_it){
+ if(!isInIndexSet(J, res_it->first) && (std::abs(res_it->second) > tag.getResidualThreshold())){
+ inprod = norm2 = 0;
+ sparse_inner_prod(res, A_v_c[res_it->first], inprod);
+ sparse_norm_2(A_v_c[res_it->first], norm2);
+ p.push_back(std::pair<size_t, ScalarType>(res_it->first, (inprod*inprod)/(norm2*norm2)));
+ }
+ }
+
+ std::sort(p.begin(), p.end(), CompareSecond());
+ while ((cur_size < J.size())&&(p.size() > 0)) {
+ J_u.push_back(p[0].first);
+ p.erase(p.begin());
+ cur_size++;
+ }
+ p.clear();
+ return (cur_size > 0);
+ }
+
+ /** @brief Building a new indices to current set of row indices I_n, cf. Kallischko dissertation p.32
+ * @param A_v_c vectorized column-wise initial matrix
+ * @param I set of previous determined row indices
+ * @param J_n set of new column indices
+ * @param I_n set of new indices
+ */
+ template<typename SparseVectorType>
+ void buildNewRowSet(const std::vector<SparseVectorType>& A_v_c, const std::vector<unsigned int>& I,
+ const std::vector<unsigned int>& J_n, std::vector<unsigned int>& I_n){
+ for(size_t i = 0; i < J_n.size(); ++i){
+ for(typename SparseVectorType::const_iterator col_it = A_v_c[J_n[i]].begin(); col_it!=A_v_c[J_n[i]].end(); ++col_it){
+ if(!isInIndexSet(I, col_it->first)&&!isInIndexSet(I_n, col_it->first)){
+ I_n.push_back(col_it->first);
+ }
+ }
+ }
+ }
+
+ /** @brief Composition of new block for QR factorization cf. Kallischko dissertation p.82, figure 4.7
+ * @param A_I_J previously composed block
+ * @param A_I_J_u matrix Q'*A(I, \\tilde J), where \\tilde J - set of new column indices
+ * @param A_I_u_J_u is composition of lower part A(I, \\tilde J) and A(\\tilde I, \\tilde J) - new block for QR decomposition
+ */
+ template<typename MatrixType>
+ void QRBlockComposition(const MatrixType& A_I_J, const MatrixType& A_I_J_u, MatrixType& A_I_u_J_u){
+ typedef typename MatrixType::value_type ScalarType;
+ size_t row_n1 = A_I_J_u.size1() - A_I_J.size2();
+ size_t row_n2 = A_I_u_J_u.size1();
+ size_t row_n = row_n1 + row_n2;
+ size_t col_n = A_I_J_u.size2();
+ MatrixType C = boost::numeric::ublas::zero_matrix<ScalarType>(row_n, col_n);
+ boost::numeric::ublas::project(C, boost::numeric::ublas::range(0, row_n1), boost::numeric::ublas::range(0, col_n)) +=
+ boost::numeric::ublas::project(A_I_J_u, boost::numeric::ublas::range(A_I_J.size2(), A_I_J_u.size1()),
+ boost::numeric::ublas::range(0, col_n));
+
+ boost::numeric::ublas::project(C, boost::numeric::ublas::range(row_n1, row_n1 + row_n2),
+ boost::numeric::ublas::range(0, col_n)) += A_I_u_J_u;
+ A_I_u_J_u = C;
+ }
+
+ /** @brief CPU-based dynamic update for SPAI preconditioner
+ * @param A initial sparse matrix
+ * @param A_v_c vectorized column-wise initial matrix
+ * @param g_res container of residuals for all columns
+ * @param g_is_update container with identificators that shows which block should be modified
+ * @param g_I container of row index sets for all columns
+ * @param g_J container of column index sets for all columns
+ * @param g_b_v container of vectors of beta for Q recovery(cf. Golub Van Loan "Matrix Computations", 3rd edition p.211)
+ * @param g_A_I_J container of block matrices from previous update
+ * @param tag SPAI configuration tag
+ */
+ template<typename SparseMatrixType, typename SparseVectorType, typename DenseMatrixType, typename VectorType>
+ void block_update(const SparseMatrixType& A, const std::vector<SparseVectorType>& A_v_c,
+ std::vector<SparseVectorType>& g_res,
+ std::vector<bool>& g_is_update,
+ std::vector<std::vector<unsigned int> >& g_I,
+ std::vector<std::vector<unsigned int> >& g_J,
+ std::vector<VectorType>& g_b_v,
+ std::vector<DenseMatrixType>& g_A_I_J,
+ spai_tag const & tag){
+ typedef typename DenseMatrixType::value_type ScalarType;
+ //set of new column indices
+ std::vector<std::vector<unsigned int> > g_J_u(g_J.size());
+ //set of new row indices
+ std::vector<std::vector<unsigned int> > g_I_u(g_J.size());
+ //matrix A(I, \tilde J), cf. Kallischko p.31-32
+ std::vector<DenseMatrixType> g_A_I_J_u(g_J.size());
+ //matrix A(\tilde I, \tilde J), cf. Kallischko
+ std::vector<DenseMatrixType> g_A_I_u_J_u(g_J.size());
+ //new vector of beta coefficients from QR factorization
+ std::vector<VectorType> g_b_v_u(g_J.size());
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+ for(std::size_t i = 0; i < g_J.size(); ++i){
+ if(g_is_update[i]){
+ if(buildAugmentedIndexSet<SparseVectorType, ScalarType>(A_v_c, g_res[i], g_J[i], g_J_u[i], tag)){
+ //initialize matrix A_I_\hatJ
+ initProjectSubMatrix(A, g_J_u[i], g_I[i], g_A_I_J_u[i]);
+ //multiplication of Q'*A_I_\hatJ
+ apply_q_trans_mat(g_A_I_J[i], g_b_v[i], g_A_I_J_u[i]);
+ //building new rows index set \hatI
+ buildNewRowSet(A_v_c, g_I[i], g_J_u[i], g_I_u[i]);
+ initProjectSubMatrix(A, g_J_u[i], g_I_u[i], g_A_I_u_J_u[i]);
+ //composition of block for new QR factorization
+ QRBlockComposition(g_A_I_J[i], g_A_I_J_u[i], g_A_I_u_J_u[i]);
+ //QR factorization
+ single_qr(g_A_I_u_J_u[i], g_b_v_u[i]);
+ //composition of new R and new vector b_v
+ composeNewR(g_A_I_J_u[i], g_A_I_u_J_u[i], g_A_I_J[i]);
+ composeNewVector(g_b_v_u[i], g_b_v[i]);
+ //composition of new sets: I and J
+ g_J[i].insert(g_J[i].end(), g_J_u[i].begin(), g_J_u[i].end());
+ g_I[i].insert(g_I[i].end(), g_I_u[i].begin(), g_I_u[i].end());
+ }else{
+ g_is_update[i] = false;
+ }
+ }
+ }
+ }
+ /**************************************************** GPU SPAI Update ****************************************************************/
+
+
+ //performs Q'*A(I, \tilde J) on GPU
+ /** @brief Performs multiplication Q'*A(I, \\tilde J) on GPU
+ * @param g_J_u container of sets of new column indices
+ * @param g_I container of row indices
+ * @param g_A_I_J_vcl block matrix composed from previous blocks, they are blocks of R
+ * @param g_bv_vcl block of beta vectors
+ * @param g_A_I_J_u_vcl block of matrices A(I, \\tilde J)
+ * @param g_is_update indicators, that show if a certain block should be processed
+ * @param cur_iter current iteration, used to make sure that kernel compiles just once
+ */
+ template<typename ScalarType>
+ void block_q_multiplication(const std::vector<std::vector<unsigned int> >& g_J_u,
+ const std::vector<std::vector<unsigned int> >& g_I,
+ block_matrix& g_A_I_J_vcl,
+ block_vector& g_bv_vcl,
+ block_matrix& g_A_I_J_u_vcl,
+ std::vector<cl_uint>& g_is_update,
+ const unsigned int cur_iter){
+ unsigned int local_r_n, local_c_n, sz_blocks;
+ get_max_block_size(g_I, local_r_n);
+ get_max_block_size(g_J_u, local_c_n);
+ //for debug
+ std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+ std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+ compute_blocks_size(g_I, g_J_u, sz_blocks, blocks_ind, matrix_dims);
+ std::vector<ScalarType> con_A_I_J(sz_blocks, static_cast<ScalarType>(0));
+ /*if(cur_iter == 1){
+ //if first run - compile the program
+ std::string block_q_kernel_file_name = "kernels/spai/block_q.cl";
+ std::string block_q_kernel_source;
+ read_kernel_from_file(block_q_kernel_file_name, block_q_kernel_source);
+ viennacl::ocl::program & block_q_prog = viennacl::ocl::current_context().add_program(block_q_kernel_source.c_str(), "block_q_kernel_source");
+ block_q_prog.add_kernel("block_q_mult");
+ //
+ }*/
+
+ viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+ &(g_is_update[0]));
+ viennacl::ocl::kernel& block_q_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_q_mult");
+ block_q_kernel.local_work_size(0, local_c_n);
+ block_q_kernel.global_work_size(0, 256);
+ viennacl::ocl::enqueue(block_q_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle2(), g_A_I_J_u_vcl.handle(), g_A_I_J_u_vcl.handle2(),
+ g_bv_vcl.handle(),
+ g_bv_vcl.handle1(), g_A_I_J_vcl.handle1(), g_A_I_J_u_vcl.handle1(), g_is_update_vcl,
+ viennacl::ocl::local_mem(static_cast<unsigned int>(sizeof(ScalarType)*(local_r_n*local_c_n))),
+ static_cast<cl_uint>(g_I.size())));
+ }
+
+ /** @brief Assembly of container of index row sets: I_q, row indices for new "QR block"
+ * @param g_I container of row indices
+ * @param g_J container of column indices
+ * @param g_I_u container of new row indices
+ * @param g_I_q container of row indices for new QR blocks
+ */
+ void assemble_qr_row_inds(const std::vector<std::vector<unsigned int> >& g_I, const std::vector<std::vector<unsigned int> > g_J,
+ const std::vector<std::vector<unsigned int> >& g_I_u,
+ std::vector<std::vector<unsigned int> >& g_I_q){
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+ for(std::size_t i = 0; i < g_I.size(); ++i){
+ for(std::size_t j = g_J[i].size(); j < g_I[i].size(); ++j){
+ g_I_q[i].push_back(g_I[i][j]);
+ }
+
+ for(std::size_t j = 0; j < g_I_u[i].size(); ++j){
+ g_I_q[i].push_back(g_I_u[i][j]);
+ }
+ }
+ }
+
+ /** @brief Performs assembly for new QR block
+ * @param g_J container of column indices
+ * @param g_I container of row indices
+ * @param g_J_u container of new column indices
+ * @param g_I_u container of new row indices
+ * @param g_I_q container of row indices for new QR blocks
+ * @param g_A_I_J_u_vcl blocks of Q'*A(I, \\tilde J)
+ * @param matrix_dimensions array with matrix dimensions for all blocks
+ * @param g_A_I_u_J_u_vcl blocks A(\\tilde I, \\tilde J)
+ * @param g_is_update container with update indicators
+ * @param is_empty_block indicator if all previous blocks A(\\tilde I, \\tilde J) - are empty, in case if they are empty kernel with smaller number of
+ arguments is used
+ * @param cur_iter current iteration, used to make sure that kernel compiles just once
+ */
+ template<typename ScalarType>
+ void assemble_qr_block(
+ const std::vector<std::vector<unsigned int> >& g_J,
+ const std::vector<std::vector<unsigned int> >& g_I,
+ const std::vector<std::vector<unsigned int> >& g_J_u,
+ const std::vector<std::vector<unsigned int> >& g_I_u,
+ std::vector<std::vector<unsigned int> >& g_I_q,
+ block_matrix& g_A_I_J_u_vcl,
+ viennacl::ocl::handle<cl_mem>& matrix_dimensions,
+ block_matrix& g_A_I_u_J_u_vcl,
+ std::vector<cl_uint>& g_is_update,
+ const bool is_empty_block,
+ const unsigned int cur_iter){
+ //std::vector<std::vector<unsigned int> > g_I_q(g_I.size());
+ assemble_qr_row_inds(g_I, g_J, g_I_u, g_I_q);
+ unsigned int sz_blocks;
+ std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+ std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+ compute_blocks_size(g_I_q, g_J_u, sz_blocks, blocks_ind, matrix_dims);
+ std::vector<ScalarType> con_A_I_J_q(sz_blocks, static_cast<ScalarType>(0));
+
+ /*if(cur_iter == 1){
+ std::string qr_block_asm_file_name = "kernels/spai/qr_block_assembly_g.cl";
+ std::string qr_block_asm_source;
+ read_kernel_from_file(qr_block_asm_file_name, qr_block_asm_source);
+ viennacl::ocl::program & qr_block_asm_prog = viennacl::ocl::current_context().add_program(qr_block_asm_source.c_str(),
+ "qr_block_assembly_kernel_source");
+
+ qr_block_asm_prog.add_kernel("block_qr_assembly");
+
+
+ //extra kernel in case of empty block A_I_u_J_u
+ std::string qr_block_asm_file_name_1 = "kernels/spai/qr_block_assembly_1_g.cl";
+ std::string qr_block_asm_source_1;
+ read_kernel_from_file(qr_block_asm_file_name_1, qr_block_asm_source_1);
+ viennacl::ocl::program & qr_block_asm_prog_1 = viennacl::ocl::current_context().add_program(qr_block_asm_source_1.c_str(),
+ "qr_block_assembly_kernel_source_1");
+
+ qr_block_asm_prog_1.add_kernel("block_qr_assembly_1");
+
+ }*/
+ block_matrix g_A_I_J_q_vcl;
+ //need to allocate memory for QR block
+ g_A_I_J_q_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*sz_blocks),
+ &(con_A_I_J_q[0]));
+ g_A_I_J_q_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size())),
+ &(matrix_dims[0]));
+ g_A_I_J_q_vcl.handle2() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size() + 1)),
+ &(blocks_ind[0]));
+ viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+ &(g_is_update[0]));
+
+ if(!is_empty_block){
+ viennacl::ocl::kernel& qr_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_qr_assembly");
+ qr_assembly_kernel.local_work_size(0, 1);
+ qr_assembly_kernel.global_work_size(0, 256);
+ viennacl::ocl::enqueue(qr_assembly_kernel(matrix_dimensions,
+ g_A_I_J_u_vcl.handle(),
+ g_A_I_J_u_vcl.handle2(),
+ g_A_I_J_u_vcl.handle1(),
+ g_A_I_u_J_u_vcl.handle(),
+ g_A_I_u_J_u_vcl.handle2(),
+ g_A_I_u_J_u_vcl.handle1(),
+ g_A_I_J_q_vcl.handle(),
+ g_A_I_J_q_vcl.handle2(),
+ g_A_I_J_q_vcl.handle1(),
+ g_is_update_vcl,
+ static_cast<unsigned int>(g_I.size())));
+ }else{
+ viennacl::ocl::kernel& qr_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_qr_assembly_1");
+ qr_assembly_kernel.local_work_size(0, 1);
+ qr_assembly_kernel.global_work_size(0, 256);
+ viennacl::ocl::enqueue(qr_assembly_kernel(matrix_dimensions, g_A_I_J_u_vcl.handle(), g_A_I_J_u_vcl.handle2(),
+ g_A_I_J_u_vcl.handle1(),
+ g_A_I_J_q_vcl.handle(),
+ g_A_I_J_q_vcl.handle2(), g_A_I_J_q_vcl.handle1(),
+ g_is_update_vcl,
+ static_cast<unsigned int>(g_I.size())));
+ }
+ g_A_I_u_J_u_vcl.handle() = g_A_I_J_q_vcl.handle();
+ g_A_I_u_J_u_vcl.handle1() = g_A_I_J_q_vcl.handle1();
+ g_A_I_u_J_u_vcl.handle2() = g_A_I_J_q_vcl.handle2();
+ }
+
+ /** @brief Performs assembly for new R matrix on GPU
+ * @param g_I container of row indices
+ * @param g_J container of column indices
+ * @param g_A_I_J_vcl container of block matrices from previous update
+ * @param g_A_I_J_u_vcl container of block matrices Q'*A(I, \\tilde J)
+ * @param g_A_I_u_J_u_vcl container of block matrices QR factored on current iteration
+ * @param g_bv_vcl block of beta vectors from previous iteration
+ * @param g_bv_vcl_u block of updated beta vectors got after recent QR factorization
+ * @param g_is_update container with identificators that shows which block should be modified
+ * @param cur_iter current iteration, used to make sure that kernel compiles just once
+ */
+ template<typename ScalarType>
+ void assemble_r(std::vector<std::vector<unsigned int> >& g_I, std::vector<std::vector<unsigned int> >& g_J,
+ block_matrix& g_A_I_J_vcl,
+ block_matrix& g_A_I_J_u_vcl,
+ block_matrix& g_A_I_u_J_u_vcl,
+ block_vector& g_bv_vcl,
+ block_vector& g_bv_vcl_u,
+ std::vector<cl_uint>& g_is_update,
+ const unsigned int cur_iter){
+ std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+ std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+ std::vector<cl_uint> start_bv_r_inds(g_I.size() + 1, 0);
+ unsigned int sz_blocks, bv_size;
+ compute_blocks_size(g_I, g_J, sz_blocks, blocks_ind, matrix_dims);
+ get_size(g_J, bv_size);
+ init_start_inds(g_J, start_bv_r_inds);
+ std::vector<ScalarType> con_A_I_J_r(sz_blocks, static_cast<ScalarType>(0));
+ std::vector<ScalarType> b_v_r(bv_size, static_cast<ScalarType>(0));
+ /*if(cur_iter == 1){
+ std::string r_block_asm_file_name = "kernels/spai/r_block_assembly_g.cl";
+ std::string r_block_asm_source;
+ read_kernel_from_file(r_block_asm_file_name, r_block_asm_source);
+ viennacl::ocl::program & r_block_asm_prog = viennacl::ocl::current_context().add_program(r_block_asm_source.c_str(),
+ "r_block_assembly_kernel_source");
+ r_block_asm_prog.add_kernel("block_r_assembly");
+
+ std::string bv_block_asm_file_name = "kernels/spai/bv_block_assembly_g.cl";
+ std::string bv_block_asm_source;
+ read_kernel_from_file(bv_block_asm_file_name, bv_block_asm_source);
+ viennacl::ocl::program & bv_block_asm_prog = viennacl::ocl::current_context().add_program(bv_block_asm_source.c_str(),
+ "bv_block_assembly_kernel_source");
+ bv_block_asm_prog.add_kernel("block_bv_assembly");
+ }*/
+ block_matrix g_A_I_J_r_vcl;
+ block_vector g_bv_r_vcl;
+ g_A_I_J_r_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*sz_blocks),
+ &(con_A_I_J_r[0]));
+ g_A_I_J_r_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size())),
+ &(matrix_dims[0]));
+ g_A_I_J_r_vcl.handle2() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<unsigned int>(g_I.size() + 1)),
+ &(blocks_ind[0]));
+ g_bv_r_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*bv_size),
+ &(b_v_r[0]));
+ g_bv_r_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)),
+ &(start_bv_r_inds[0]));
+ viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+ &(g_is_update[0]));
+ viennacl::ocl::kernel& r_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_r_assembly");
+ r_assembly_kernel.local_work_size(0, 1);
+ r_assembly_kernel.global_work_size(0, 256);
+
+ viennacl::ocl::enqueue(r_assembly_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle2(), g_A_I_J_vcl.handle1(),
+ g_A_I_J_u_vcl.handle(), g_A_I_J_u_vcl.handle2(), g_A_I_J_u_vcl.handle1(),
+ g_A_I_u_J_u_vcl.handle(), g_A_I_u_J_u_vcl.handle2(), g_A_I_u_J_u_vcl.handle1(),
+ g_A_I_J_r_vcl.handle(), g_A_I_J_r_vcl.handle2(), g_A_I_J_r_vcl.handle1(),
+ g_is_update_vcl, static_cast<cl_uint>(g_I.size())));
+
+ viennacl::ocl::kernel & bv_assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_bv_assembly");
+ bv_assembly_kernel.local_work_size(0, 1);
+ bv_assembly_kernel.global_work_size(0, 256);
+ viennacl::ocl::enqueue(bv_assembly_kernel(g_bv_vcl.handle(), g_bv_vcl.handle1(), g_A_I_J_vcl.handle1(), g_bv_vcl_u.handle(),
+ g_bv_vcl_u.handle1(), g_A_I_J_u_vcl.handle1(),
+ g_bv_r_vcl.handle(), g_bv_r_vcl.handle1(), g_A_I_J_r_vcl.handle1(), g_is_update_vcl,
+ static_cast<cl_uint>(g_I.size())));
+ g_bv_vcl.handle() = g_bv_r_vcl.handle();
+ g_bv_vcl.handle1() = g_bv_r_vcl.handle1();
+
+ g_A_I_J_vcl.handle() = g_A_I_J_r_vcl.handle();
+ g_A_I_J_vcl.handle2() = g_A_I_J_r_vcl.handle2();
+ g_A_I_J_vcl.handle1() = g_A_I_J_r_vcl.handle1();
+ }
+
+ /** @brief GPU-based block update
+ * @param A sparse matrix
+ * @param A_v_c vectorized column-wise initial matrix
+ * @param g_is_update container with identificators that shows which block should be modified
+ * @param g_res container of residuals for all columns
+ * @param g_J container of column index sets for all columns
+ * @param g_I container of row index sets for all columns
+ * @param g_A_I_J_vcl container of block matrices from previous update
+ * @param g_bv_vcl block of beta vectors from previous iteration
+ * @param tag SPAI configuration tag
+ * @param cur_iter current iteration, used to make sure that kernel compiles just once
+ */
+ template<typename ScalarType, unsigned int MAT_ALIGNMENT, typename SparseVectorType>
+ void block_update(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A, const std::vector<SparseVectorType>& A_v_c,
+ std::vector<cl_uint>& g_is_update,
+ std::vector<SparseVectorType>& g_res,
+ std::vector<std::vector<unsigned int> >& g_J,
+ std::vector<std::vector<unsigned int> >& g_I,
+ block_matrix& g_A_I_J_vcl,
+ block_vector& g_bv_vcl,
+ spai_tag const & tag,
+ const unsigned int cur_iter){
+ //updated index set for columns
+ std::vector<std::vector<unsigned int> > g_J_u(g_J.size());
+ //updated index set for rows
+ std::vector<std::vector<unsigned int> > g_I_u(g_J.size());
+ //mixed index set of old and updated indices for rows
+ std::vector<std::vector<unsigned int> > g_I_q(g_J.size());
+ //GPU memory for A_I_\hatJ
+ block_matrix g_A_I_J_u_vcl;
+ //GPU memory for A_\hatI_\hatJ
+ block_matrix g_A_I_u_J_u_vcl;
+ bool is_empty_block;
+ //GPU memory for new b_v
+ block_vector g_bv_u_vcl;
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+ for(std::size_t i = 0; i < g_J.size(); ++i){
+ if(g_is_update[i]){
+ if(buildAugmentedIndexSet<SparseVectorType, ScalarType>(A_v_c, g_res[i], g_J[i], g_J_u[i], tag)){
+ buildNewRowSet(A_v_c, g_I[i], g_J_u[i], g_I_u[i]);
+ }
+ }
+ }
+ //assemble new A_I_J_u blocks on GPU and multiply them with Q'
+ block_assembly(A, g_J_u, g_I, g_A_I_J_u_vcl, g_is_update, is_empty_block, cur_iter);
+ //I have matrix A_I_J_u ready..
+ block_q_multiplication<ScalarType>(g_J_u, g_I, g_A_I_J_vcl, g_bv_vcl, g_A_I_J_u_vcl, g_is_update, cur_iter);
+ //assemble A_\hatI_\hatJ
+ block_assembly(A, g_J_u, g_I_u, g_A_I_u_J_u_vcl, g_is_update, is_empty_block, cur_iter);
+ assemble_qr_block<ScalarType>(g_J, g_I, g_J_u, g_I_u, g_I_q, g_A_I_J_u_vcl, g_A_I_J_vcl.handle1(),
+ g_A_I_u_J_u_vcl, g_is_update, is_empty_block, cur_iter);
+
+ block_qr<ScalarType>(g_I_q, g_J_u, g_A_I_u_J_u_vcl, g_bv_u_vcl, g_is_update, cur_iter);
+ //concatanation of new and old indices
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+ for(std::size_t i = 0; i < g_J.size(); ++i){
+ g_J[i].insert(g_J[i].end(), g_J_u[i].begin(), g_J_u[i].end());
+ g_I[i].insert(g_I[i].end(), g_I_u[i].begin(), g_I_u[i].end());
+ }
+ assemble_r<ScalarType>(g_I, g_J, g_A_I_J_vcl, g_A_I_J_u_vcl, g_A_I_u_J_u_vcl, g_bv_vcl, g_bv_u_vcl, g_is_update, cur_iter);
+ }
+
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai-static.hpp b/viennacl/linalg/detail/spai/spai-static.hpp
new file mode 100644
index 0000000..f4a14ff
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai-static.hpp
@@ -0,0 +1,166 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_STATIC_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_STATIC_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/spai-static.hpp
+ @brief Implementation of a static SPAI. Experimental in 1.2.x.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+//#include "spai-dynamic.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/cg.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+
+//#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ /********************************* STATIC SPAI FUNCTIONS******************************************/
+
+ /** @brief Projects solution of LS problem onto original column m
+ * @param m_in solution of LS
+ * @param J set of non-zero columns
+ * @param m original column of M
+ */
+ template <typename VectorType, typename SparseVectorType>
+ void fanOutVector(const VectorType& m_in, const std::vector<unsigned int>& J, SparseVectorType& m){
+ unsigned int cnt = 0;
+ for (size_t i = 0; i < J.size(); ++i) {
+ m[J[i]] = m_in(cnt++);
+ }
+ }
+ /** @brief Solution of linear:R*x=y system by backward substitution
+ * @param R uppertriangular matrix
+ * @param y right handside vector
+ * @param x solution vector
+ */
+ template <typename MatrixType, typename VectorType>
+ void backwardSolve(const MatrixType& R, const VectorType& y, VectorType& x){
+ typedef typename MatrixType::value_type ScalarType;
+ for (long i = R.size2()-1; i >= 0 ; i--) {
+ x(i) = y(i);
+ for (size_t j = i+1; j < R.size2(); ++j) {
+ x(i) -= R(i,j)*x(j);
+ }
+ x(i) /= R(i,i);
+ }
+ }
+ /** @brief Perform projection of set I on the unit-vector
+ * @param I set of non-zero rows
+ * @param y result vector
+ * @param ind index of unit vector
+ */
+ template <typename VectorType, typename ScalarType>
+ void projectI(const std::vector<unsigned int>& I, VectorType& y, unsigned int ind){
+ for(size_t i = 0; i < I.size(); ++i){
+ //y.resize(y.size()+1);
+ if(I[i] == ind){
+ y(i) = static_cast<ScalarType>(1.0);
+ }
+ else{
+ y(i) = static_cast<ScalarType>(0.0);
+ }
+ }
+ }
+
+ /** @brief Builds index set of projected columns for current column of preconditioner
+ * @param v current column of preconditioner
+ * @param J output - index set of non-zero columns
+ */
+ template <typename SparseVectorType>
+ void buildColumnIndexSet(const SparseVectorType& v, std::vector<unsigned int>& J){
+ //typedef typename VectorType::value_type ScalarType;
+ unsigned int tmp_v;
+ for(typename SparseVectorType::const_iterator vec_it = v.begin(); vec_it != v.end(); ++vec_it){
+ tmp_v = vec_it->first;
+ J.push_back(vec_it->first);
+ }
+ std::sort(J.begin(), J.end());
+ }
+
+ /** @brief Initialize preconditioner with sparcity pattern = p(A)
+ * @param A input matrix
+ * @param M output matrix - initialized preconditioner
+ */
+ template <typename SparseMatrixType>
+ void initPreconditioner(const SparseMatrixType& A, SparseMatrixType& M){
+ typedef typename SparseMatrixType::value_type ScalarType;
+ M.resize(A.size1(), A.size2(), false);
+ for(typename SparseMatrixType::const_iterator1 row_it = A.begin1(); row_it!= A.end1(); ++row_it){
+ //
+ for(typename SparseMatrixType::const_iterator2 col_it = row_it.begin(); col_it != row_it.end(); ++col_it){
+ M(col_it.index1(),col_it.index2()) = static_cast<ScalarType>(1);
+ }
+ }
+ }
+
+ /** @brief Row projection for matrix A(:,J) -> A(I,J), building index set of non-zero rows
+ * @param A_v_c input matrix
+ * @param J set of non-zero rows
+ * @param I output matrix
+ */
+ template <typename SparseVectorType>
+ void projectRows(const std::vector<SparseVectorType>& A_v_c, const std::vector<unsigned int>& J, std::vector<unsigned int>& I){
+ for(size_t i = 0; i < J.size(); ++i){
+ for(typename SparseVectorType::const_iterator col_it = A_v_c[J[i]].begin(); col_it!=A_v_c[J[i]].end(); ++col_it){
+ if(!isInIndexSet(I, col_it->first)){
+ I.push_back(col_it->first);
+ }
+ }
+ }
+ std::sort(I.begin(), I.end());
+ }
+ }
+ }
+ }
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai.hpp b/viennacl/linalg/detail/spai/spai.hpp
new file mode 100644
index 0000000..a40a9bd
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai.hpp
@@ -0,0 +1,754 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/spai.hpp
+ @brief Main implementation of SPAI (not FSPAI)
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+
+//local includes
+#include "viennacl/linalg/detail/spai/spai_tag.hpp"
+#include "viennacl/linalg/qr.hpp"
+#include "viennacl/linalg/detail/spai/spai-dynamic.hpp"
+#include "viennacl/linalg/detail/spai/spai-static.hpp"
+#include "viennacl/linalg/detail/spai/sparse_vector.hpp"
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+
+//boost includes
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+
+
+#define VIENNACL_SPAI_K_b 20
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ //debug function for print
+ template<typename SparseVectorType>
+ void print_sparse_vector(const SparseVectorType& v){
+ for(typename SparseVectorType::const_iterator vec_it = v.begin(); vec_it!= v.end(); ++vec_it){
+ std::cout<<"[ "<<vec_it->first<<" ]:"<<vec_it->second<<std::endl;
+ }
+ }
+ template<typename DenseMatrixType>
+ void print_matrix( DenseMatrixType & m){
+ for(int i = 0; i < m.size2(); ++i){
+ for(int j = 0; j < m.size1(); ++j){
+ std::cout<<m(j, i)<<" ";
+ }
+ std::cout<<std::endl;
+ }
+ }
+
+ /** @brief Add two sparse vectors res_v = b*v
+ * @param v initial sparse vector
+ * @param b scalar
+ * @param res_v output vector
+ */
+ template<typename SparseVectorType, typename ScalarType>
+ void add_sparse_vectors(const SparseVectorType& v, const ScalarType b, SparseVectorType& res_v){
+ for(typename SparseVectorType::const_iterator v_it = v.begin(); v_it != v.end(); ++v_it){
+ res_v[v_it->first] += b*v_it->second;
+ }
+ }
+ //sparse-matrix - vector product
+ /** @brief Computation of residual res = A*v - e
+ * @param A_v_c column major vectorized input sparse matrix
+ * @param v sparse vector, in this case new column of preconditioner matrix
+ * @param ind index for current column
+ * @param res residual
+ */
+ template<typename SparseVectorType, typename ScalarType>
+ void compute_spai_residual(const std::vector<SparseVectorType>& A_v_c, const SparseVectorType& v,
+ const unsigned int ind, SparseVectorType& res){
+ for(typename SparseVectorType::const_iterator v_it = v.begin(); v_it != v.end(); ++v_it){
+ add_sparse_vectors(A_v_c[v_it->first], v_it->second, res);
+ }
+ res[ind] -= static_cast<ScalarType>(1);
+ }
+
+ /** @brief Setting up index set of columns and rows for certain column
+ * @param A_v_c column major vectorized initial sparse matrix
+ * @param v current column of preconditioner matrix
+ * @param J set of column indices
+ * @param I set of row indices
+ */
+ template<typename SparseVectorType>
+ void build_index_set(const std::vector<SparseVectorType>& A_v_c, const SparseVectorType& v, std::vector<unsigned int>& J,
+ std::vector<unsigned int>& I){
+ buildColumnIndexSet(v, J);
+ projectRows(A_v_c, J, I);
+ }
+
+ /************************************************** CPU BLOCK SET UP ***************************************/
+ /** @brief Setting up blocks and QR factorizing them on CPU
+ * @param A initial sparse matrix
+ * @param A_v_c column major vectorized initial sparse matrix
+ * @param M_v initialized preconditioner
+ * @param g_I container of row indices
+ * @param g_J container of column indices
+ * @param g_A_I_J container of dense matrices -> R matrices after QR factorization
+ * @param g_b_v container of vectors beta, necessary for Q recovery
+ */
+ template<typename SparseMatrixType, typename DenseMatrixType, typename SparseVectorType, typename VectorType>
+ void block_set_up(const SparseMatrixType& A,
+ const std::vector<SparseVectorType>& A_v_c,
+ const std::vector<SparseVectorType>& M_v,
+ std::vector<std::vector<unsigned int> >& g_I,
+ std::vector<std::vector<unsigned int> >& g_J,
+ std::vector<DenseMatrixType>& g_A_I_J,
+ std::vector<VectorType>& g_b_v){
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+ for(std::size_t i = 0; i < M_v.size(); ++i){
+ build_index_set(A_v_c, M_v[i], g_J[i], g_I[i]);
+ initProjectSubMatrix(A, g_J[i], g_I[i], g_A_I_J[i]);
+ //print_matrix(g_A_I_J[i]);
+ single_qr(g_A_I_J[i], g_b_v[i]);
+ //print_matrix(g_A_I_J[i]);
+ }
+ }
+
+ /** @brief Setting up index set of columns and rows for all columns
+ * @param A_v_c column major vectorized initial sparse matrix
+ * @param M_v initialized preconditioner
+ * @param g_J container of column indices
+ * @param g_I container of row indices
+ */
+ template<typename SparseVectorType>
+ void index_set_up(const std::vector<SparseVectorType>& A_v_c,
+ const std::vector<SparseVectorType>& M_v,
+ std::vector<std::vector<unsigned int> >& g_J,
+ std::vector<std::vector<unsigned int> >& g_I)
+ {
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+ for(std::size_t i = 0; i < M_v.size(); ++i){
+ build_index_set(A_v_c, M_v[i], g_J[i], g_I[i]);
+ }
+ }
+
+ /************************************************** GPU BLOCK SET UP ***************************************/
+ /** @brief Setting up blocks and QR factorizing them on GPU
+ * @param A initial sparse matrix
+ * @param A_v_c column major vectorized initial sparse matrix
+ * @param M_v initialized preconditioner
+ * @param g_is_update container that indicates which blocks are active
+ * @param g_I container of row indices
+ * @param g_J container of column indices
+ * @param g_A_I_J container of dense matrices -> R matrices after QR factorization
+ * @param g_bv container of vectors beta, necessary for Q recovery
+ * @param cur_iter number of current iteration
+ */
+ template<typename ScalarType, unsigned int MAT_ALIGNMENT, typename SparseVectorType>
+ void block_set_up(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A,
+ const std::vector<SparseVectorType>& A_v_c,
+ const std::vector<SparseVectorType>& M_v,
+ std::vector<cl_uint> g_is_update,
+ std::vector<std::vector<unsigned int> >& g_I,
+ std::vector<std::vector<unsigned int> >& g_J,
+ block_matrix & g_A_I_J,
+ block_vector & g_bv,
+ const unsigned int cur_iter)
+ {
+ bool is_empty_block;
+ //build index set
+ index_set_up(A_v_c, M_v, g_J, g_I);
+ block_assembly(A, g_J, g_I, g_A_I_J, g_is_update, is_empty_block, cur_iter);
+ block_qr<ScalarType>(g_I, g_J, g_A_I_J, g_bv, g_is_update, cur_iter);
+
+ }
+
+
+ /***************************************************************************************************/
+ /******************************** SOLVING LS PROBLEMS ON GPU ***************************************/
+ /***************************************************************************************************/
+ /** @brief Elicitation of sparse vector m for particular column from m_in - contigious vector for all columns
+ * @param m_in contigious sparse vector for all columns
+ * @param start_m_ind start index of particular vector
+ * @param J column index set
+ * @param m sparse vector for particular column
+ */
+ template<typename ScalarType, typename SparseVectorType>
+ void custom_fan_out(const std::vector<ScalarType> & m_in,
+ unsigned int start_m_ind,
+ const std::vector<unsigned int> & J,
+ SparseVectorType & m)
+ {
+ unsigned int cnt = 0;
+ for (std::size_t i = 0; i < J.size(); ++i) {
+ m[J[i]] = m_in[start_m_ind + cnt++];
+ }
+ }
+
+
+
+ //GPU based least square problem
+ /** @brief Solution of Least square problem on GPU
+ * @param A_v_c column-major vectorized initial sparse matrix
+ * @param M_v column-major vectorized sparse preconditioner matrix
+ * @param g_I container of row set indices
+ * @param g_J container of column set indices
+ * @param g_A_I_J_vcl contigious matrix that consists of blocks A(I_k, J_k)
+ * @param g_bv_vcl contigious vector that consists of betas, necessary for Q recovery
+ * @param g_res container of residuals
+ * @param g_is_update container with indicators which blocks are active
+ * @param tag spai tag
+ * @param cur_iter current iteration number
+ */
+ template<typename SparseVectorType, typename ScalarType>
+ void least_square_solve(std::vector<SparseVectorType> & A_v_c,
+ std::vector<SparseVectorType> & M_v,
+ std::vector<std::vector<unsigned int> >& g_I,
+ std::vector<std::vector<unsigned int> > & g_J,
+ block_matrix & g_A_I_J_vcl,
+ block_vector & g_bv_vcl,
+ std::vector<SparseVectorType> & g_res,
+ std::vector<cl_uint> & g_is_update,
+ const spai_tag & tag,
+ const unsigned int cur_iter){
+ unsigned int y_sz, m_sz;
+ std::vector<cl_uint> y_inds(M_v.size() + 1, static_cast<cl_uint>(0));
+ std::vector<cl_uint> m_inds(M_v.size() + 1, static_cast<cl_uint>(0));
+ get_size(g_I, y_sz);
+ init_start_inds(g_I, y_inds);
+ init_start_inds(g_J, m_inds);
+ //create y_v
+ std::vector<ScalarType> y_v(y_sz, static_cast<ScalarType>(0));
+ for(std::size_t i = 0; i < M_v.size(); ++i){
+ for(std::size_t j = 0; j < g_I[i].size(); ++j){
+ if(g_I[i][j] == i)
+ y_v[y_inds[i] + j] = static_cast<ScalarType>(1.0);
+ }
+ }
+ //compute m_v
+ get_size(g_J, m_sz);
+ std::vector<ScalarType> m_v(m_sz, static_cast<cl_uint>(0));
+
+ //acquire kernel
+ /*if(cur_iter == 0){
+ std::string ls_kernel_file_name = "kernels/spai/ls_g.cl";
+ std::string ls_kernel_source;
+ read_kernel_from_file(ls_kernel_file_name, ls_kernel_source);
+ //compilation of a kernel
+ viennacl::ocl::program & ls_prog = viennacl::ocl::current_context().add_program(ls_kernel_source.c_str(), "ls_kernel_source");
+ //least square kernel
+ ls_prog.add_kernel("block_least_squares");
+ }*/
+ block_vector y_v_vcl;
+ block_vector m_v_vcl;
+ //prepearing memory for least square problem on GPU
+ y_v_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*y_v.size()),
+ &(y_v[0]));
+ m_v_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*m_v.size()),
+ &(m_v[0]));
+ y_v_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)),
+ &(y_inds[0]));
+ viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_is_update.size())),
+ &(g_is_update[0]));
+ viennacl::ocl::kernel& ls_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "block_least_squares");
+ ls_kernel.local_work_size(0, 1);
+ ls_kernel.global_work_size(0, 256);
+ viennacl::ocl::enqueue(ls_kernel(g_A_I_J_vcl.handle(), g_A_I_J_vcl.handle2(), g_bv_vcl.handle(), g_bv_vcl.handle1(), m_v_vcl.handle(),
+ y_v_vcl.handle(), y_v_vcl.handle1(),
+ g_A_I_J_vcl.handle1(), g_is_update_vcl,
+ //viennacl::ocl::local_mem(static_cast<unsigned int>(sizeof(ScalarType)*(local_r_n*local_c_n))),
+ static_cast<unsigned int>(M_v.size())));
+ //copy vector m_v back from GPU to CPU
+ cl_int vcl_err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+ m_v_vcl.handle(), CL_TRUE, 0,
+ sizeof(ScalarType)*(m_v.size()),
+ &(m_v[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(vcl_err);
+ //fan out vector in parallel
+ //#pragma omp parallel for
+ for(std::size_t i = 0; i < M_v.size(); ++i){
+ if(g_is_update[i]){
+ //faned out onto sparse vector
+ custom_fan_out(m_v, m_inds[i], g_J[i], M_v[i]);
+ g_res[i].clear();
+ compute_spai_residual<SparseVectorType, ScalarType>(A_v_c, M_v[i], static_cast<unsigned int>(i), g_res[i]);
+ ScalarType res_norm = 0;
+ //compute norm of res - just to make sure that this implementatino works correct
+ sparse_norm_2(g_res[i], res_norm);
+ //std::cout<<"Residual norm of column #: "<<i<<std::endl;
+ //std::cout<<res_norm<<std::endl;
+ //std::cout<<"************************"<<std::endl;
+ g_is_update[i] = (res_norm > tag.getResidualNormThreshold())&& (!tag.getIsStatic())?(1):(0);
+
+ }
+ }
+ }
+
+ //CPU based least square problems
+ /** @brief Solution of Least square problem on CPU
+ * @param A_v_c column-major vectorized initial sparse matrix
+ * @param g_R blocks for least square solution
+ * @param g_b_v vectors beta, necessary for Q recovery
+ * @param g_I container of row index set for all columns of matrix M
+ * @param g_J container of column index set for all columns of matrix M
+ * @param g_res container of residuals
+ * @param g_is_update container with indicators which blocks are active
+ * @param M_v column-major vectorized sparse matrix, final preconditioner
+ * @param tag spai tag
+ */
+ template<typename SparseVectorType, typename DenseMatrixType, typename VectorType>
+ void least_square_solve(const std::vector<SparseVectorType>& A_v_c,
+ std::vector<DenseMatrixType>& g_R,
+ std::vector<VectorType>& g_b_v,
+ std::vector<std::vector<unsigned int> >& g_I,
+ std::vector<std::vector<unsigned int> >& g_J,
+ std::vector<SparseVectorType>& g_res,
+ std::vector<bool>& g_is_update,
+ std::vector<SparseVectorType>& M_v,
+ const spai_tag& tag){
+ typedef typename DenseMatrixType::value_type ScalarType;
+ //VectorType m_new, y;
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+ for(std::size_t i = 0; i < M_v.size(); ++i){
+ if(g_is_update[i]){
+ VectorType y = boost::numeric::ublas::zero_vector<ScalarType>(g_I[i].size());
+ //std::cout<<y<<std::endl;
+ projectI<VectorType, ScalarType>(g_I[i], y, static_cast<unsigned int>(tag.getBegInd() + i));
+ apply_q_trans_vec(g_R[i], g_b_v[i], y);
+ VectorType m_new = boost::numeric::ublas::zero_vector<ScalarType>(g_R[i].size2());
+ backwardSolve(g_R[i], y, m_new);
+ fanOutVector(m_new, g_J[i], M_v[i]);
+ g_res[i].clear();
+ compute_spai_residual<SparseVectorType, ScalarType>(A_v_c, M_v[i], static_cast<unsigned int>(tag.getBegInd() + i), g_res[i]);
+ ScalarType res_norm = 0;
+ sparse_norm_2(g_res[i], res_norm);
+// std::cout<<"Residual norm of column #: "<<i<<std::endl;
+// std::cout<<res_norm<<std::endl;
+// std::cout<<"************************"<<std::endl;
+ g_is_update[i] = (res_norm > tag.getResidualNormThreshold())&& (!tag.getIsStatic());
+ }
+ }
+ }
+
+ //************************************ UPDATE CHECK ***************************************************//
+ template<typename VectorType>
+ bool is_all_update(VectorType& parallel_is_update){
+
+ for(unsigned int i = 0; i < parallel_is_update.size(); ++i){
+ if(parallel_is_update[i])
+ return true;
+ }
+ return false;
+ }
+
+ //********************************** MATRIX VECTORIZATION ***********************************************//
+ //Matrix vectorization, column based approach
+ /** @brief Solution of Least square problem on CPU
+ * @param M_in input sparse, boost::numeric::ublas::compressed_matrix
+ * @param M_v array of sparse vectors
+ */
+ template<typename SparseMatrixType, typename SparseVectorType>
+ void vectorize_column_matrix(const SparseMatrixType& M_in, std::vector<SparseVectorType>& M_v){
+ for(typename SparseMatrixType::const_iterator1 row_it = M_in.begin1(); row_it!= M_in.end1(); ++row_it){
+ //
+ for(typename SparseMatrixType::const_iterator2 col_it = row_it.begin(); col_it != row_it.end(); ++col_it){
+ M_v[static_cast<unsigned int>(col_it.index2())][static_cast<unsigned int>(col_it.index1())] = *col_it;
+ }
+ //std::cout<<std::endl;
+ }
+ }
+
+ //Matrix vectorization row based approach
+ template<typename SparseMatrixType, typename SparseVectorType>
+ void vectorize_row_matrix(const SparseMatrixType& M_in, std::vector<SparseVectorType>& M_v){
+ for(typename SparseMatrixType::const_iterator1 row_it = M_in.begin1(); row_it!= M_in.end1(); ++row_it){
+ for(typename SparseMatrixType::const_iterator2 col_it = row_it.begin(); col_it != row_it.end(); ++col_it){
+ M_v[static_cast<unsigned int>(col_it.index1())][static_cast<unsigned int>(col_it.index2())] = *col_it;
+ }
+ }
+ }
+
+ //************************************* BLOCK ASSEMBLY CODE *********************************************//
+
+
+
+ void write_set_to_array(const std::vector<std::vector<unsigned int> >& ind_set, std::vector<cl_uint>& a){
+ unsigned int cnt = 0;
+ //unsigned int tmp;
+ for(size_t i = 0; i < ind_set.size(); ++i){
+ for(size_t j = 0; j < ind_set[i].size(); ++j){
+ a[cnt++] = static_cast<cl_uint>(ind_set[i][j]);
+ }
+ }
+ }
+
+
+
+ //assembling blocks on GPU
+ /** @brief Assembly of blocks on GPU by a gived set of row indices: g_I and column indices: g_J
+ * @param A intial sparse matrix
+ * @param g_J container of column index set
+ * @param g_I container of row index set
+ * @param g_A_I_J_vcl contigious blocks A(I, J) using GPU memory
+ * @param g_is_update container with indicators which blocks are active
+ * @param is_empty_block parameter that indicates if no block were assembled
+ * @param cur_iter current iteration number
+ */
+ template<typename ScalarType, unsigned int MAT_ALIGNMENT>
+ void block_assembly(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A, const std::vector<std::vector<unsigned int> >& g_J,
+ const std::vector<std::vector<unsigned int> >& g_I,
+ block_matrix& g_A_I_J_vcl,
+ std::vector<cl_uint>& g_is_update,
+ bool& is_empty_block,
+ const unsigned int cur_iter){
+ //computing start indices for index sets and start indices for block matrices
+ unsigned int sz_I, sz_J, sz_blocks;
+ std::vector<cl_uint> matrix_dims(g_I.size()*2, static_cast<cl_uint>(0));
+ std::vector<cl_uint> i_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+ std::vector<cl_uint> j_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+ std::vector<cl_uint> blocks_ind(g_I.size() + 1, static_cast<cl_uint>(0));
+ //
+ init_start_inds(g_J, j_ind);
+ init_start_inds(g_I, i_ind);
+ //
+ get_size(g_J, sz_J);
+ get_size(g_I, sz_I);
+ std::vector<cl_uint> I_set(sz_I, static_cast<cl_uint>(0));
+ //
+ std::vector<cl_uint> J_set(sz_J, static_cast<cl_uint>(0));
+ // computing size for blocks
+ // writing set to arrays
+ write_set_to_array(g_I, I_set);
+ write_set_to_array(g_J, J_set);
+ // if block for assembly does exist
+ if(I_set.size() > 0 && J_set.size() > 0){
+ compute_blocks_size(g_I, g_J, sz_blocks, blocks_ind, matrix_dims);
+ std::vector<ScalarType> con_A_I_J(sz_blocks, static_cast<ScalarType>(0));
+
+ /*if(cur_iter == 0){
+ std::string block_asm_file_name = "kernels/spai/block_assembly_g.cl";
+ std::string block_asm_source;
+ read_kernel_from_file(block_asm_file_name, block_asm_source);
+ viennacl::ocl::program & block_asm_prog = viennacl::ocl::current_context().add_program(block_asm_source.c_str(),
+ "block_assembly_kernel_source");
+
+ block_asm_prog.add_kernel("assemble_blocks");
+ }*/
+ block_vector set_I_vcl, set_J_vcl;
+ //init memory on GPU
+ //contigious g_A_I_J
+ g_A_I_J_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(ScalarType)*(sz_blocks)),
+ &(con_A_I_J[0]));
+ //matrix_dimensions
+ g_A_I_J_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*2*static_cast<cl_uint>(g_I.size())),
+ &(matrix_dims[0]));
+ //start_block inds
+ g_A_I_J_vcl.handle2() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)),
+ &(blocks_ind[0]));
+ //set_I
+ set_I_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*sz_I),
+ &(I_set[0]));
+ //set_J
+ set_J_vcl.handle() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*sz_J),
+ &(J_set[0]));
+ //i_ind
+ set_I_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)),
+ &(i_ind[0]));
+ //j_ind
+ set_J_vcl.handle1() = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*(g_I.size() + 1)),
+ &(j_ind[0]));
+
+ viennacl::ocl::handle<cl_mem> g_is_update_vcl = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ static_cast<unsigned int>(sizeof(cl_uint)*g_is_update.size()),
+ &(g_is_update[0]));
+ viennacl::ocl::kernel& assembly_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::spai<ScalarType, 1>::program_name(), "assemble_blocks");
+ assembly_kernel.local_work_size(0, 1);
+ assembly_kernel.global_work_size(0, 256);
+ viennacl::ocl::enqueue(assembly_kernel(A.handle1(), A.handle2(), A.handle(),
+ set_I_vcl.handle(), set_J_vcl.handle(), set_I_vcl.handle1(),
+ set_J_vcl.handle1(),
+ g_A_I_J_vcl.handle2(), g_A_I_J_vcl.handle1(), g_A_I_J_vcl.handle(),
+ g_is_update_vcl,
+ static_cast<unsigned int>(g_I.size())));
+ is_empty_block = false;
+ }else{
+ is_empty_block = true;
+ }
+ }
+
+ /************************************************************************************************************************/
+
+ /** @brief Insertion of vectorized matrix column into original sparse matrix
+ * @param M_v column-major vectorized matrix
+ * @param M original sparse matrix
+ * @param is_right indicates if matrix should be transposed in the output
+ */
+ template<typename SparseMatrixType, typename SparseVectorType>
+ void insert_sparse_columns(const std::vector<SparseVectorType>& M_v,
+ SparseMatrixType& M,
+ bool is_right){
+ if (is_right)
+ {
+ for(unsigned int i = 0; i < M_v.size(); ++i){
+ for(typename SparseVectorType::const_iterator vec_it = M_v[i].begin(); vec_it!=M_v[i].end(); ++vec_it){
+ M(vec_it->first, i) = vec_it->second;
+ }
+ }
+ }
+ else //transposed fill of M
+ {
+ for(unsigned int i = 0; i < M_v.size(); ++i){
+ for(typename SparseVectorType::const_iterator vec_it = M_v[i].begin(); vec_it!=M_v[i].end(); ++vec_it){
+ M(i, vec_it->first) = vec_it->second;
+ }
+ }
+ }
+ }
+
+ /** @brief Transposition of sparse matrix
+ * @param A_in intial sparse matrix
+ * @param A output transposed matrix
+ */
+ template<typename MatrixType>
+ void sparse_transpose(const MatrixType& A_in, MatrixType& A){
+ typedef typename MatrixType::value_type ScalarType;
+ std::vector<std::map<size_t, ScalarType> > temp_A(A_in.size2());
+ A.resize(A_in.size2(), A_in.size1(), false);
+
+ for (typename MatrixType::const_iterator1 row_it = A_in.begin1();
+ row_it != A_in.end1();
+ ++row_it)
+ {
+ for (typename MatrixType::const_iterator2 col_it = row_it.begin();
+ col_it != row_it.end();
+ ++col_it)
+ {
+ temp_A[col_it.index2()][col_it.index1()] = *col_it;
+ }
+ }
+
+ for (size_t i=0; i<temp_A.size(); ++i)
+ {
+ for (typename std::map<size_t, ScalarType>::const_iterator it = temp_A[i].begin();
+ it != temp_A[i].end();
+ ++it)
+ A(i, it->first) = it->second;
+ }
+ }
+
+
+
+
+// template<typename SparseVectorType>
+// void custom_copy(std::vector<SparseVectorType> & M_v, std::vector<SparseVectorType> & l_M_v, const unsigned int beg_ind){
+// for(int i = 0; i < l_M_v.size(); ++i){
+// l_M_v[i] = M_v[i + beg_ind];
+// }
+// }
+
+ //CPU version
+ /** @brief Construction of SPAI preconditioner on CPU
+ * @param A initial sparse matrix
+ * @param M output preconditioner
+ * @param tag spai tag
+ */
+ template <typename MatrixType>
+ void computeSPAI(const MatrixType & A, MatrixType & M, spai_tag & tag){
+ typedef typename MatrixType::value_type ScalarType;
+ typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+ typedef typename viennacl::linalg::detail::spai::sparse_vector<ScalarType> SparseVectorType;
+ typedef typename boost::numeric::ublas::matrix<ScalarType> DenseMatrixType;
+ //sparse matrix transpose...
+ unsigned int cur_iter = 0;
+ tag.setBegInd(0); tag.setEndInd(VIENNACL_SPAI_K_b);
+ bool go_on = true;
+ std::vector<SparseVectorType> A_v_c(M.size2());
+ std::vector<SparseVectorType> M_v(M.size2());
+ vectorize_column_matrix(A, A_v_c);
+ vectorize_column_matrix(M, M_v);
+
+
+ while(go_on){
+ go_on = (tag.getEndInd() < static_cast<long>(M.size2()));
+ cur_iter = 0;
+ unsigned int l_sz = tag.getEndInd() - tag.getBegInd();
+ //std::vector<bool> g_is_update(M.size2(), true);
+ std::vector<bool> g_is_update(l_sz, true);
+ //init is update
+ //init_parallel_is_update(g_is_update);
+ //std::vector<SparseVectorType> A_v_c(K);
+ //std::vector<SparseVectorType> M_v(K);
+ //vectorization of marices
+ //print_matrix(M_v);
+ std::vector<SparseVectorType> l_M_v(l_sz);
+ //custom_copy(M_v, l_M_v, beg_ind);
+ std::copy(M_v.begin() + tag.getBegInd(), M_v.begin() + tag.getEndInd(), l_M_v.begin());
+ //print_matrix(l_M_v);
+ //std::vector<SparseVectorType> l_A_v_c(K);
+ //custom_copy(A_v_c, l_A_v_c, beg_ind);
+ //std::copy(A_v_c.begin() + beg_ind, A_v_c.begin() + end_ind, l_A_v_c.begin());
+ //print_matrix(l_A_v_c);
+ //vectorize_row_matrix(A, A_v_r);
+ //working blocks
+ //std::vector<DenseMatrixType> g_A_I_J(M.size2())
+ std::vector<DenseMatrixType> g_A_I_J(l_sz);
+ //std::vector<VectorType> g_b_v(M.size2());
+ std::vector<VectorType> g_b_v(l_sz);
+ //std::vector<SparseVectorType> g_res(M.size2());
+ std::vector<SparseVectorType> g_res(l_sz);
+ //std::vector<std::vector<unsigned int> > g_I(M.size2());
+ std::vector<std::vector<unsigned int> > g_I(l_sz);
+ //std::vector<std::vector<unsigned int> > g_J(M.size2());
+ std::vector<std::vector<unsigned int> > g_J(l_sz);
+ while((cur_iter < tag.getIterationLimit())&&is_all_update(g_is_update)){
+ // SET UP THE BLOCKS..
+ // PHASE ONE
+ if(cur_iter == 0) block_set_up(A, A_v_c, l_M_v, g_I, g_J, g_A_I_J, g_b_v);
+ else block_update(A, A_v_c, g_res, g_is_update, g_I, g_J, g_b_v, g_A_I_J, tag);
+
+ //PHASE TWO, LEAST SQUARE SOLUTION
+ least_square_solve(A_v_c, g_A_I_J, g_b_v, g_I, g_J, g_res, g_is_update, l_M_v, tag);
+
+ if(tag.getIsStatic()) break;
+ cur_iter++;
+
+
+ }
+ std::copy(l_M_v.begin(), l_M_v.end(), M_v.begin() + tag.getBegInd());
+ tag.setBegInd(tag.getEndInd());//beg_ind = end_ind;
+ tag.setEndInd(std::min(static_cast<long>(tag.getBegInd() + VIENNACL_SPAI_K_b), static_cast<long>(M.size2())));
+ //std::copy(l_M_v.begin(), l_M_v.end(), M_v.begin() + tag.getBegInd());
+
+ }
+ M.resize(M.size1(), M.size2(), false);
+ insert_sparse_columns(M_v, M, tag.getIsRight());
+ }
+
+
+ //GPU - based version
+ /** @brief Construction of SPAI preconditioner on GPU
+ * @param A initial sparse matrix
+ * @param cpu_A copy of initial matrix on CPU
+ * @param cpu_M output preconditioner on CPU
+ * @param M output preconditioner
+ * @param tag SPAI tag class with parameters
+ */
+ template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+ void computeSPAI(const viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& A, //input
+ const boost::numeric::ublas::compressed_matrix<ScalarType>& cpu_A,
+ boost::numeric::ublas::compressed_matrix<ScalarType>& cpu_M, //output
+ viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT>& M,
+ const spai_tag& tag){
+ typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+ typedef typename viennacl::linalg::detail::spai::sparse_vector<ScalarType> SparseVectorType;
+ typedef typename boost::numeric::ublas::matrix<ScalarType> DenseMatrixType;
+ typedef typename boost::numeric::ublas::compressed_matrix<ScalarType> CPUMatrixType;
+ //typedef typename viennacl::compressed_matrix<ScalarType> GPUSparseMatrixType;
+ //sparse matrix transpose...
+ unsigned int cur_iter = 0;
+ std::vector<cl_uint> g_is_update(cpu_M.size2(), static_cast<cl_uint>(1));
+ //init is update
+ //init_parallel_is_update(g_is_update);
+ std::vector<SparseVectorType> A_v_c(cpu_M.size2());
+ std::vector<SparseVectorType> M_v(cpu_M.size2());
+ vectorize_column_matrix(cpu_A, A_v_c);
+ vectorize_column_matrix(cpu_M, M_v);
+ std::vector<SparseVectorType> g_res(cpu_M.size2());
+ std::vector<std::vector<unsigned int> > g_I(cpu_M.size2());
+ std::vector<std::vector<unsigned int> > g_J(cpu_M.size2());
+
+ //OpenCL variables
+ block_matrix g_A_I_J_vcl;
+ block_vector g_bv_vcl;
+ while((cur_iter < tag.getIterationLimit())&&is_all_update(g_is_update)){
+ // SET UP THE BLOCKS..
+ // PHASE ONE..
+ //timer.start();
+ //index set up on CPU
+ if(cur_iter == 0) block_set_up(A, A_v_c, M_v, g_is_update, g_I, g_J, g_A_I_J_vcl, g_bv_vcl, cur_iter);
+ else block_update(A, A_v_c, g_is_update, g_res, g_J, g_I, g_A_I_J_vcl, g_bv_vcl, tag, cur_iter);
+ //std::cout<<"Phase 2 timing: "<<timer.get()<<std::endl;
+ //PERFORM LEAST SQUARE problems solution
+ //PHASE TWO
+ //timer.start();
+ least_square_solve<SparseVectorType, ScalarType>(A_v_c, M_v, g_I, g_J, g_A_I_J_vcl, g_bv_vcl, g_res, g_is_update, tag, cur_iter);
+ //std::cout<<"Phase 3 timing: "<<timer.get()<<std::endl;
+ if(tag.getIsStatic()) break;
+ cur_iter++;
+ }
+ cpu_M.resize(cpu_M.size1(), cpu_M.size2(), false);
+ insert_sparse_columns(M_v, cpu_M, tag.getIsRight());
+ //copy back to GPU
+ M.resize(static_cast<unsigned int>(cpu_M.size1()), static_cast<unsigned int>(cpu_M.size2()));
+ viennacl::copy(cpu_M, M);
+ }
+
+ }
+ }
+ }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/detail/spai/spai_tag.hpp b/viennacl/linalg/detail/spai/spai_tag.hpp
new file mode 100644
index 0000000..046aaac
--- /dev/null
+++ b/viennacl/linalg/detail/spai/spai_tag.hpp
@@ -0,0 +1,149 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPAI_TAG_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPAI_TAG_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/linalg/detail/spai/spai_tag.hpp
+ @brief Implementation of the spai tag holding SPAI configuration parameters. Experimental in 1.2.x.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+
+
+//#define __NO_STD_VECTOR
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <cmath>
+#include <sstream>
+#include "viennacl/ocl/backend.hpp"
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+#include "boost/numeric/ublas/detail/matrix_assign.hpp"
+//#include "boost/thread/thread.hpp"
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ /** @brief A tag for SPAI
+ * Contains values for the algorithm.
+ * Must be passed to spai_precond constructor
+ */
+ class spai_tag
+ {
+ /** @brief Constructor
+ * @param residual_norm_threshold Calculate until the norm of the residual falls below this threshold
+ * @param iteration_limit maximum number of iterations
+ * @param residual_threshold determines starting threshold in residual vector for including new indices into set J
+ * @param is_static determines if static version of SPAI should be used
+ * @param is_right determines if left or right preconditioner should be used
+ */
+ public:
+ spai_tag(
+ double residual_norm_threshold = 1e-3,
+ unsigned int iteration_limit = 5,
+ double residual_threshold = 1e-2,
+ bool is_static = false,
+ bool is_right = false) :
+ _residual_norm_threshold(residual_norm_threshold),
+ _iteration_limit(iteration_limit),
+ _residual_threshold(residual_threshold),
+ _is_static(is_static),
+ _is_right(is_right) {};
+
+ double getResidualNormThreshold() const
+ { return _residual_norm_threshold; }
+
+ double getResidualThreshold() const
+ { return _residual_threshold; }
+
+ unsigned int getIterationLimit () const
+ { return _iteration_limit; }
+
+ bool getIsStatic() const
+ { return _is_static; }
+
+ bool getIsRight() const
+ { return _is_right; }
+
+ long getBegInd() const
+ { return _beg_ind; }
+
+ long getEndInd() const
+ { return _end_ind; }
+
+
+
+ void setResidualNormThreshold(double residual_norm_threshold)
+ {
+ if(residual_norm_threshold > 0)
+ _residual_norm_threshold = residual_norm_threshold;
+ }
+
+ void setResidualThreshold(double residual_threshold)
+ {
+ if(residual_threshold > 0)
+ _residual_threshold = residual_threshold;
+ }
+
+ void setIterationLimit(unsigned int iteration_limit)
+ {
+ if(iteration_limit > 0)
+ _iteration_limit = iteration_limit;
+ }
+
+ void setIsRight(bool is_right) { _is_right = is_right; }
+
+ void setIsStatic(bool is_static) { _is_static = is_static; }
+
+ void setBegInd(long beg_ind) { _beg_ind = beg_ind; }
+
+ void setEndInd(long end_ind){ _end_ind = end_ind; }
+
+
+ private:
+ double _residual_norm_threshold;
+ unsigned int _iteration_limit;
+ long _beg_ind, _end_ind;
+ double _residual_threshold;
+ bool _is_static;
+ bool _is_right;
+ };
+
+ }
+ }
+ }
+}
+#endif
diff --git a/viennacl/linalg/detail/spai/sparse_vector.hpp b/viennacl/linalg/detail/spai/sparse_vector.hpp
new file mode 100644
index 0000000..b422ae6
--- /dev/null
+++ b/viennacl/linalg/detail/spai/sparse_vector.hpp
@@ -0,0 +1,106 @@
+#ifndef VIENNACL_LINALG_DETAIL_SPAI_SPARSE_VECTOR_HPP
+#define VIENNACL_LINALG_DETAIL_SPAI_SPARSE_VECTOR_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/detail/spai/sparse_vector.hpp
+ @brief Implementation of a helper sparse vector class for SPAI. Experimental in 1.2.x.
+
+ SPAI code contributed by Nikolay Lukash
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+//local includes
+//#include <omp.h>
+
+
+namespace viennacl
+{
+ namespace linalg
+ {
+ namespace detail
+ {
+ namespace spai
+ {
+
+ /**
+ * @brief Represents sparse vector based on std::map<unsigned int, ScalarType>
+ */
+ template <typename ScalarType>
+ class sparse_vector{
+ public:
+ typedef typename std::map<unsigned int, ScalarType>::iterator iterator;
+ typedef typename std::map<unsigned int, ScalarType>::const_iterator const_iterator;
+ sparse_vector(){
+ }
+
+ /** @brief Set the index of the vector in the original matrix
+ * May only be called once.
+ */
+ //getter
+ ScalarType& operator[] (const unsigned int ind){
+ return _v[ind];
+
+ }
+
+ void clear(){
+ _v.clear();
+ }
+
+ const_iterator find(const unsigned int var) const{
+ return _v.find(var);
+ }
+
+ iterator find(const unsigned int var){
+ return _v.find(var);
+ }
+
+ const_iterator begin() const{
+ return _v.begin();
+ }
+
+ const_iterator end() const{
+ return _v.end();
+ }
+
+
+ iterator begin(){
+ return _v.begin();
+ }
+
+ iterator end(){
+ return _v.end();
+ }
+
+
+ private:
+ unsigned int _size;
+ std::map<unsigned int, ScalarType> _v;
+ };
+ }
+ }
+ }
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/direct_solve.hpp b/viennacl/linalg/direct_solve.hpp
index c4cb78c..bcbad1c 100644
--- a/viennacl/linalg/direct_solve.hpp
+++ b/viennacl/linalg/direct_solve.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_DIRECT_SOLVE_HPP_
+#define VIENNACL_DIRECT_SOLVE_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_DIRECT_SOLVE_HPP_
-#define _VIENNACL_DIRECT_SOLVE_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file direct_solve.hpp
@brief Implementations of dense direct solvers are found here.
@@ -55,8 +57,11 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
k.global_work_size(0, B.size2() * k.local_work_size());
- viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(),
- B, B.size1(), B.size2(), B.internal_size1(), B.internal_size2()));
+ viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+ cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()),
+ B, cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.internal_size1()), cl_uint(B.internal_size2()))
+ );
}
/** @brief Direct inplace solver for dense upper triangular systems
@@ -83,8 +88,11 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
k.global_work_size(0, B.lhs().size1() * k.local_work_size());
- viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(),
- B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));
+ viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+ cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()),
+ B.lhs(), cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+ cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()))
+ );
}
//upper triangular solver for transposed lower triangular matrices
@@ -112,8 +120,11 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
k.global_work_size(0, B.size2() * k.local_work_size());
- viennacl::ocl::enqueue(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
- B, B.size1(), B.size2(), B.internal_size1(), B.internal_size2()));
+ viennacl::ocl::enqueue(k(proxy.lhs(), cl_uint(proxy.lhs().size1()), cl_uint(proxy.lhs().size2()),
+ cl_uint(proxy.lhs().internal_size1()), cl_uint(proxy.lhs().internal_size2()),
+ B, cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.internal_size1()), cl_uint(B.internal_size2()))
+ );
}
/** @brief Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems
@@ -142,8 +153,11 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
k.global_work_size(0, B.lhs().size1() * k.local_work_size());
- viennacl::ocl::enqueue(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(), proxy.lhs().internal_size1(), proxy.lhs().internal_size2(),
- B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2()));
+ viennacl::ocl::enqueue(k(proxy.lhs(), cl_uint(proxy.lhs().size1()), cl_uint(proxy.lhs().size2()),
+ cl_uint(proxy.lhs().internal_size1()), cl_uint(proxy.lhs().internal_size2()),
+ B.lhs(), cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+ cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()))
+ );
}
template<typename SCALARTYPE, typename F, unsigned int ALIGNMENT, unsigned int VEC_ALIGNMENT, typename SOLVERTAG>
@@ -161,7 +175,8 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
k.global_work_size(0, k.local_work_size());
- viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(), vec));
+ viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+ cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()), vec));
}
/** @brief Direct inplace solver for dense upper triangular systems that stem from transposed lower triangular systems
@@ -186,8 +201,8 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), ss.str());
k.global_work_size(0, k.local_work_size());
- viennacl::ocl::enqueue(k(proxy.lhs(), proxy.lhs().size1(), proxy.lhs().size2(),
- proxy.lhs().internal_size1(), proxy.lhs().internal_size2(), vec));
+ viennacl::ocl::enqueue(k(proxy.lhs(), cl_uint(proxy.lhs().size1()), cl_uint(proxy.lhs().size2()),
+ cl_uint(proxy.lhs().internal_size1()), cl_uint(proxy.lhs().internal_size2()), vec));
}
/////////////////// general wrappers for non-inplace solution //////////////////////
@@ -341,7 +356,8 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "lu_factorize");
k.global_work_size(0, k.local_work_size());
- viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2()));
+ viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+ cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2())) );
}
diff --git a/viennacl/linalg/gmres.hpp b/viennacl/linalg/gmres.hpp
index dff8f9a..670d5ae 100644
--- a/viennacl/linalg/gmres.hpp
+++ b/viennacl/linalg/gmres.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_GMRES_HPP_
-#define _VIENNACL_GMRES_HPP_
+#ifndef VIENNACL_GMRES_HPP_
+#define VIENNACL_GMRES_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file gmres.hpp
@brief Implementations of the generalized minimum residual method are in this file.
@@ -21,11 +23,15 @@
#include <vector>
#include <cmath>
+#include <limits>
#include "viennacl/forwards.h"
#include "viennacl/tools/tools.hpp"
#include "viennacl/linalg/norm_2.hpp"
#include "viennacl/linalg/prod.hpp"
#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/traits/clear.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/meta/result_of.hpp"
namespace viennacl
{
@@ -118,11 +124,11 @@ namespace viennacl
template <typename MatrixType, typename VectorType, typename PreconditionerType>
VectorType solve(const MatrixType & matrix, VectorType const & rhs, gmres_tag const & tag, PreconditionerType const & precond)
{
- typedef typename viennacl::tools::result_of::value_type<VectorType>::type ScalarType;
- typedef typename viennacl::tools::CPU_SCALAR_TYPE_DEDUCER<ScalarType>::ResultType CPU_ScalarType;
- unsigned int problem_size = viennacl::tools::traits::size(rhs);
+ typedef typename viennacl::result_of::value_type<VectorType>::type ScalarType;
+ typedef typename viennacl::result_of::cpu_value_type<ScalarType>::type CPU_ScalarType;
+ unsigned int problem_size = viennacl::traits::size(rhs);
VectorType result(problem_size);
- viennacl::tools::traits::clear(result);
+ viennacl::traits::clear(result);
unsigned int krylov_dim = tag.krylov_dim();
if (problem_size < tag.krylov_dim())
krylov_dim = problem_size; //A Krylov space larger than the matrix would lead to seg-faults (mathematically, error is certain to be zero already)
@@ -145,22 +151,26 @@ namespace viennacl
for (k = 0; k < krylov_dim; ++k)
{
R[k].resize(tag.krylov_dim());
- viennacl::tools::traits::resize(U[k], problem_size);
+ viennacl::traits::resize(U[k], problem_size);
}
//std::cout << "Starting GMRES..." << std::endl;
tag.iters(0);
-
+
for (unsigned int it = 0; it <= tag.max_restarts(); ++it)
{
+ //std::cout << "-- GMRES Start " << it << " -- " << std::endl;
+
res = rhs;
res -= viennacl::linalg::prod(matrix, result); //initial guess zero
precond.apply(res);
+ //std::cout << "Residual: " << res << std::endl;
CPU_ScalarType rho_0 = viennacl::linalg::norm_2(res);
CPU_ScalarType rho = static_cast<CPU_ScalarType>(1.0);
+ //std::cout << "rho_0: " << rho_0 << std::endl;
- if (rho_0 / norm_rhs < tag.tolerance())
+ if (rho_0 / norm_rhs < tag.tolerance() || (norm_rhs == CPU_ScalarType(0.0)) )
{
//std::cout << "Allowed Error reached at begin of loop" << std::endl;
tag.error(rho_0 / norm_rhs);
@@ -168,12 +178,14 @@ namespace viennacl
}
res /= rho_0;
+ //std::cout << "Normalized Residual: " << res << std::endl;
+
for (k=0; k<krylov_dim; ++k)
{
- viennacl::tools::traits::clear(R[k]);
- viennacl::tools::traits::clear(U[k]);
+ viennacl::traits::clear(R[k]);
+ viennacl::traits::clear(U[k]);
R[k].resize(krylov_dim);
- viennacl::tools::traits::resize(U[k], problem_size);
+ viennacl::traits::resize(U[k], problem_size);
}
for (k = 0; k < krylov_dim; ++k)
@@ -188,7 +200,7 @@ namespace viennacl
}
else
{
- viennacl::tools::traits::clear(v_k_tilde);
+ viennacl::traits::clear(v_k_tilde);
v_k_tilde[k-1] = gpu_scalar_1;
//Householder rotations part 1
for (int i = k-1; i > -1; --i)
@@ -202,35 +214,91 @@ namespace viennacl
for (unsigned int i = 0; i < k; ++i)
v_k_tilde -= U[i] * (viennacl::linalg::inner_prod(U[i], v_k_tilde) * gpu_scalar_2);
}
+
+ //std::cout << "v_k_tilde: " << v_k_tilde << std::endl;
- viennacl::tools::traits::clear(U[k]);
- viennacl::tools::traits::resize(U[k], problem_size);
+ viennacl::traits::clear(U[k]);
+ viennacl::traits::resize(U[k], problem_size);
//copy first k entries from v_k_tilde to U[k]:
gmres_copy_helper(v_k_tilde, U[k], k);
U[k][k] = std::sqrt( viennacl::linalg::inner_prod(v_k_tilde, v_k_tilde) - viennacl::linalg::inner_prod(U[k], U[k]) );
+ if (fabs(U[k][k]) < CPU_ScalarType(10 * std::numeric_limits<CPU_ScalarType>::epsilon()))
+ break; //Note: Solution is essentially (up to round-off error) already in Krylov space. No need to proceed.
+
//copy first k+1 entries from U[k] to R[k]
gmres_copy_helper(U[k], R[k], k+1);
U[k] -= v_k_tilde;
+ //std::cout << "U[k] before normalization: " << U[k] << std::endl;
U[k] *= gpu_scalar_minus_1 / viennacl::linalg::norm_2( U[k] );
-
+ //std::cout << "Householder vector U[k]: " << U[k] << std::endl;
+
+ //DEBUG: Make sure that P_k v_k_tilde equals (rho_{1,k}, ... , rho_{k,k}, 0, 0 )
+#ifdef VIENNACL_GMRES_DEBUG
+ std::cout << "P_k v_k_tilde: " << (v_k_tilde - 2.0 * U[k] * inner_prod(U[k], v_k_tilde)) << std::endl;
+ std::cout << "R[k]: [" << R[k].size() << "](";
+ for (size_t i=0; i<R[k].size(); ++i)
+ std::cout << R[k][i] << ",";
+ std::cout << ")" << std::endl;
+#endif
+ //std::cout << "P_k res: " << (res - 2.0 * U[k] * inner_prod(U[k], res)) << std::endl;
res -= U[k] * (viennacl::linalg::inner_prod( U[k], res ) * gpu_scalar_2);
+ //std::cout << "zeta_k: " << viennacl::linalg::inner_prod( U[k], res ) * gpu_scalar_2 << std::endl;
+ //std::cout << "Updated res: " << res << std::endl;
+
+#ifdef VIENNACL_GMRES_DEBUG
+ VectorType v1(U[k].size()); v1.clear(); v1.resize(U[k].size());
+ v1(0) = 1.0;
+ v1 -= U[k] * (viennacl::linalg::inner_prod( U[k], v1 ) * gpu_scalar_2);
+ std::cout << "v1: " << v1 << std::endl;
+ boost::numeric::ublas::matrix<ScalarType> P = -2.0 * outer_prod(U[k], U[k]);
+ P(0,0) += 1.0; P(1,1) += 1.0; P(2,2) += 1.0;
+ std::cout << "P: " << P << std::endl;
+#endif
+
+ if (res[k] > rho) //machine precision reached
+ res[k] = rho;
+ if (res[k] < -1.0 * rho) //machine precision reached
+ res[k] = -1.0 * rho;
+
projection_rhs[k] = res[k];
+
rho *= std::sin( std::acos(projection_rhs[k] / rho) );
+
+#ifdef VIENNACL_GMRES_DEBUG
+ std::cout << "k-th component of r: " << res[k] << std::endl;
+ std::cout << "New rho (norm of res): " << rho << std::endl;
+#endif
if (std::fabs(rho * rho_0 / norm_rhs) < tag.tolerance())
{
//std::cout << "Krylov space big enough" << endl;
tag.error( std::fabs(rho*rho_0 / norm_rhs) );
+ ++k;
break;
}
+ //std::cout << "Current residual: " << rho * rho_0 << std::endl;
+ //std::cout << " - End of Krylov space setup - " << std::endl;
} // for k
+#ifdef VIENNACL_GMRES_DEBUG
//inplace solution of the upper triangular matrix:
+ std::cout << "Upper triangular system:" << std::endl;
+ std::cout << "Size of Krylov space: " << k << std::endl;
+ for (size_t i=0; i<k; ++i)
+ {
+ for (size_t j=0; j<k; ++j)
+ {
+ std::cout << R[j][i] << ", ";
+ }
+ std::cout << " | " << projection_rhs[i] << std::endl;
+ }
+#endif
+
for (int i=k-1; i>-1; --i)
{
for (unsigned int j=i+1; j<k; ++j)
@@ -240,6 +308,12 @@ namespace viennacl
projection_rhs[i] /= R[i][i];
}
+#ifdef VIENNACL_GMRES_DEBUG
+ std::cout << "Result of triangular solver: ";
+ for (size_t i=0; i<k; ++i)
+ std::cout << projection_rhs[i] << ", ";
+ std::cout << std::endl;
+#endif
res *= projection_rhs[0];
if (k > 0)
@@ -263,8 +337,8 @@ namespace viennacl
return result;
}
- res = rhs;
- res -= viennacl::linalg::prod(matrix, result);
+ //res = rhs;
+ //res -= viennacl::linalg::prod(matrix, result);
//std::cout << "norm_2(r)=" << norm_2(r) << std::endl;
//std::cout << "std::abs(rho*rho_0)=" << std::abs(rho*rho_0) << std::endl;
//std::cout << r << std::endl;
diff --git a/viennacl/linalg/hankel_matrix_operations.hpp b/viennacl/linalg/hankel_matrix_operations.hpp
new file mode 100644
index 0000000..d0112cd
--- /dev/null
+++ b/viennacl/linalg/hankel_matrix_operations.hpp
@@ -0,0 +1,208 @@
+#ifndef VIENNACL_LINALG_HANKEL_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_HANKEL_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file hankel_matrix_operations.hpp
+ @brief Implementations of operations using hankel_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+#include "viennacl/linalg/toeplitz_matrix_operations.hpp"
+//#include "viennacl/linalg/kernels/coordinate_matrix_kernels.h"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ vector_expression<const hankel_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod > prod_impl(const hankel_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+ {
+ return vector_expression<const hankel_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod >(mat, vec);
+ }
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a hankel_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ viennacl::vector_expression<const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod > prod_impl(const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ size_t NUM_THREADS)
+ {
+ return viennacl::vector_expression<const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod >(mat, vec);
+ }
+
+ /** @brief Carries out matrix-vector multiplication with a hankel_matrix
+ *
+ * Implementation of the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param result The result vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(const viennacl::hankel_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+ {
+ assert(mat.size1() == result.size());
+ assert(mat.size2() == vec.size());
+
+ prod_impl(mat.elements(), vec, result);
+ viennacl::detail::fft::reverse(result);
+ }
+
+ } //namespace linalg
+
+
+
+ /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+ viennacl::op_prod> & proxy)
+ {
+ // check for the special case x = A * x
+ if (proxy.rhs().handle() == this->handle())
+ {
+ viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this = result;
+ return *this;
+ }
+ else
+ {
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+ return *this;
+ }
+ return *this;
+ }
+
+ //v += A * x
+ /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this += result;
+ return *this;
+ }
+
+ /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this -= result;
+ return *this;
+ }
+
+
+ //free functions:
+ /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result += *this;
+ return result;
+ }
+
+ /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result = *this - result;
+ return result;
+ }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/ilu.hpp b/viennacl/linalg/ilu.hpp
index ba6e0ef..addcc0c 100644
--- a/viennacl/linalg/ilu.hpp
+++ b/viennacl/linalg/ilu.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_ILU_HPP_
+#define VIENNACL_LINALG_ILU_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_ILU_HPP_
-#define _VIENNACL_ILU_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file ilu.hpp
@brief Implementations of incomplete factorization preconditioners
@@ -41,8 +43,8 @@ namespace viennacl
* @param entries_per_row Number of nonzero entries per row in L and U. Note that L and U are stored in a single matrix, thus there are 2*entries_per_row in total.
* @param drop_tolerance The drop tolerance for ILUT
*/
- ilut_tag(unsigned int entries_per_row = 10,
- double drop_tolerance = 1e-3) : _entries_per_row(entries_per_row), _drop_tolerance(drop_tolerance) {};
+ ilut_tag(unsigned int entries_per_row = 20,
+ double drop_tolerance = 1e-4) : _entries_per_row(entries_per_row), _drop_tolerance(drop_tolerance) {};
void set_drop_tolerance(double tol)
{
diff --git a/viennacl/linalg/inner_prod.hpp b/viennacl/linalg/inner_prod.hpp
index b315a9e..36018c2 100644
--- a/viennacl/linalg/inner_prod.hpp
+++ b/viennacl/linalg/inner_prod.hpp
@@ -1,26 +1,30 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_INNER_PROD_HPP_
+#define VIENNACL_LINALG_INNER_PROD_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_INNERPROD_HPP_
-#define _VIENNACL_INNERPROD_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file inner_prod.hpp
@brief Generic interface for the computation of inner products. See viennacl/linalg/vector_operations.hpp for implementations.
*/
#include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
namespace viennacl
{
@@ -55,7 +59,7 @@ namespace viennacl
template< typename VectorT1, typename VectorT2 >
typename VectorT1::RealScalar
inner_prod(VectorT1 const& v1, VectorT2 const& v2,
- typename viennacl::tools::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+ typename viennacl::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT1 >::type >::value
>::type* dummy = 0)
{
//std::cout << "eigen .. " << std::endl;
@@ -79,7 +83,7 @@ namespace viennacl
template< typename VectorT1, typename VectorT2 >
typename VectorT1::value_type
inner_prod(VectorT1 const& v1, VectorT2 const& v2,
- typename viennacl::tools::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+ typename viennacl::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT1 >::type >::value
>::type* dummy = 0)
{
//std::cout << "mtl4 .. " << std::endl;
@@ -105,7 +109,7 @@ namespace viennacl
template< typename VectorT1, typename VectorT2 >
typename VectorT1::value_type
inner_prod(VectorT1 const& v1, VectorT2 const& v2,
- typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+ typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT1 >::type >::value
>::type* dummy = 0)
{
//std::cout << "ublas .. " << std::endl;
@@ -120,8 +124,8 @@ namespace viennacl
template< typename VectorT1, typename VectorT2 >
typename VectorT1::value_type
inner_prod(VectorT1 const& v1, VectorT2 const& v2,
- typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT1 >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT1 >::type >::value
+ >::type* dummy = 0)
{
assert(v1.size() == v2.size());
//std::cout << "stl .. " << std::endl;
@@ -140,7 +144,7 @@ namespace viennacl
const viennacl::vector<ScalarType, alignment2>,
viennacl::op_inner_prod >
inner_prod(viennacl::vector<ScalarType, alignment1> const & vector1, viennacl::vector<ScalarType, alignment2> const & vector2,
- typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment1> >::type >::value
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment1> >::type >::value
>::type* dummy = 0)
{
//std::cout << "viennacl .. " << std::endl;
diff --git a/viennacl/linalg/jacobi_precond.hpp b/viennacl/linalg/jacobi_precond.hpp
index 3a284ac..b50408b 100644
--- a/viennacl/linalg/jacobi_precond.hpp
+++ b/viennacl/linalg/jacobi_precond.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_JACOBI_PRECOND_HPP_
-#define _VIENNACL_JACOBI_PRECOND_HPP_
+#ifndef VIENNACL_JACOBI_PRECOND_HPP_
+#define VIENNACL_JACOBI_PRECOND_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file jacobi_precond.hpp
@brief Implementation of a simple Jacobi preconditioner
@@ -152,13 +154,16 @@ namespace viennacl
template <unsigned int ALIGNMENT>
void apply(viennacl::vector<ScalarType, ALIGNMENT> & vec) const
{
- assert(system_matrix.size1() == vec.size());
+ assert(viennacl::traits::size1(system_matrix) == viennacl::traits::size(vec));
//run kernel:
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
"diag_precond");
- viennacl::ocl::enqueue( k(diag_A_inv, vec, static_cast<cl_uint>(vec.size())) );
+ viennacl::ocl::enqueue(
+ k(viennacl::traits::handle(diag_A_inv), cl_uint(viennacl::traits::start(diag_A_inv)), cl_uint(viennacl::traits::size(diag_A_inv)),
+ viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)) )
+ );
}
private:
diff --git a/viennacl/linalg/kernels/compressed_matrix_kernels.h b/viennacl/linalg/kernels/compressed_matrix_kernels.h
deleted file mode 100644
index e644bce..0000000
--- a/viennacl/linalg/kernels/compressed_matrix_kernels.h
+++ /dev/null
@@ -1,283 +0,0 @@
-#ifndef _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/compressed_matrix_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct compressed_matrix;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct compressed_matrix<float, 4>
- {
- static std::string program_name()
- {
- return "f_compressed_matrix_4";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(compressed_matrix_align4_vec_mul);
- source.append(compressed_matrix_align1_row_scaling_2);
- source.append(compressed_matrix_align1_jacobi_precond);
- source.append(compressed_matrix_align1_row_scaling_1);
- source.append(compressed_matrix_align1_lu_forward);
- source.append(compressed_matrix_align1_bicgstab_kernel2);
- source.append(compressed_matrix_align1_lu_backward);
- source.append(compressed_matrix_align1_bicgstab_kernel1);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("row_scaling_2");
- prog_.add_kernel("jacobi_precond");
- prog_.add_kernel("row_scaling_1");
- prog_.add_kernel("lu_forward");
- prog_.add_kernel("bicgstab_kernel2");
- prog_.add_kernel("lu_backward");
- prog_.add_kernel("bicgstab_kernel1");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct compressed_matrix<float, 1>
- {
- static std::string program_name()
- {
- return "f_compressed_matrix_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(compressed_matrix_align1_vec_mul);
- source.append(compressed_matrix_align1_row_scaling_2);
- source.append(compressed_matrix_align1_jacobi_precond);
- source.append(compressed_matrix_align1_row_scaling_1);
- source.append(compressed_matrix_align1_lu_forward);
- source.append(compressed_matrix_align1_bicgstab_kernel2);
- source.append(compressed_matrix_align1_lu_backward);
- source.append(compressed_matrix_align1_bicgstab_kernel1);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("row_scaling_2");
- prog_.add_kernel("jacobi_precond");
- prog_.add_kernel("row_scaling_1");
- prog_.add_kernel("lu_forward");
- prog_.add_kernel("bicgstab_kernel2");
- prog_.add_kernel("lu_backward");
- prog_.add_kernel("bicgstab_kernel1");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct compressed_matrix<float, 8>
- {
- static std::string program_name()
- {
- return "f_compressed_matrix_8";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(compressed_matrix_align8_vec_mul);
- source.append(compressed_matrix_align1_row_scaling_2);
- source.append(compressed_matrix_align1_jacobi_precond);
- source.append(compressed_matrix_align1_row_scaling_1);
- source.append(compressed_matrix_align1_lu_forward);
- source.append(compressed_matrix_align1_bicgstab_kernel2);
- source.append(compressed_matrix_align1_lu_backward);
- source.append(compressed_matrix_align1_bicgstab_kernel1);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("row_scaling_2");
- prog_.add_kernel("jacobi_precond");
- prog_.add_kernel("row_scaling_1");
- prog_.add_kernel("lu_forward");
- prog_.add_kernel("bicgstab_kernel2");
- prog_.add_kernel("lu_backward");
- prog_.add_kernel("bicgstab_kernel1");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct compressed_matrix<double, 4>
- {
- static std::string program_name()
- {
- return "d_compressed_matrix_4";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align4_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_jacobi_precond, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_1, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_forward, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_backward, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel1, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("row_scaling_2");
- prog_.add_kernel("jacobi_precond");
- prog_.add_kernel("row_scaling_1");
- prog_.add_kernel("lu_forward");
- prog_.add_kernel("bicgstab_kernel2");
- prog_.add_kernel("lu_backward");
- prog_.add_kernel("bicgstab_kernel1");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct compressed_matrix<double, 1>
- {
- static std::string program_name()
- {
- return "d_compressed_matrix_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_jacobi_precond, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_1, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_forward, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_backward, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel1, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("row_scaling_2");
- prog_.add_kernel("jacobi_precond");
- prog_.add_kernel("row_scaling_1");
- prog_.add_kernel("lu_forward");
- prog_.add_kernel("bicgstab_kernel2");
- prog_.add_kernel("lu_backward");
- prog_.add_kernel("bicgstab_kernel1");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct compressed_matrix<double, 8>
- {
- static std::string program_name()
- {
- return "d_compressed_matrix_8";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align8_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_jacobi_precond, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_row_scaling_1, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_forward, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_lu_backward, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(compressed_matrix_align1_bicgstab_kernel1, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("row_scaling_2");
- prog_.add_kernel("jacobi_precond");
- prog_.add_kernel("row_scaling_1");
- prog_.add_kernel("lu_forward");
- prog_.add_kernel("bicgstab_kernel2");
- prog_.add_kernel("lu_backward");
- prog_.add_kernel("bicgstab_kernel1");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/compressed_matrix_source.h b/viennacl/linalg/kernels/compressed_matrix_source.h
deleted file mode 100644
index 5475a17..0000000
--- a/viennacl/linalg/kernels/compressed_matrix_source.h
+++ /dev/null
@@ -1,504 +0,0 @@
-#ifndef _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_
-#define _VIENNACL_COMPRESSED_MATRIX_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const compressed_matrix_align4_vec_mul =
-"__kernel void vec_mul(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const uint4 * column_indices, \n"
-" __global const float4 * elements,\n"
-" __global const float * vector, \n"
-" __global float * result,\n"
-" unsigned int size)\n"
-"{ \n"
-" float dot_prod;\n"
-" unsigned int start, next_stop;\n"
-" uint4 col_idx;\n"
-" float4 tmp_vec;\n"
-" float4 tmp_entries;\n"
-" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-" {\n"
-" dot_prod = 0.0f;\n"
-" start = row_indices[row] / 4;\n"
-" next_stop = row_indices[row+1] / 4;\n"
-" for (unsigned int i = start; i < next_stop; ++i)\n"
-" {\n"
-" col_idx = column_indices[i];\n"
-" tmp_entries = elements[i];\n"
-" tmp_vec.x = vector[col_idx.x];\n"
-" tmp_vec.y = vector[col_idx.y];\n"
-" tmp_vec.z = vector[col_idx.z];\n"
-" tmp_vec.w = vector[col_idx.w];\n"
-" dot_prod += dot(tmp_entries, tmp_vec);\n"
-" }\n"
-" result[row] = dot_prod;\n"
-" }\n"
-"}\n"
-; //compressed_matrix_align4_vec_mul
-
-const char * const compressed_matrix_align1_vec_mul =
-"__kernel void vec_mul(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const unsigned int * column_indices, \n"
-" __global const float * elements,\n"
-" __global const float * vector, \n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-" {\n"
-" float dot_prod = 0.0f;\n"
-" unsigned int row_end = row_indices[row+1];\n"
-" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-" dot_prod += elements[i] * vector[column_indices[i]];\n"
-" result[row] = dot_prod;\n"
-" }\n"
-"}\n"
-; //compressed_matrix_align1_vec_mul
-
-const char * const compressed_matrix_align1_row_scaling_2 =
-"__kernel void row_scaling_2(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const unsigned int * column_indices, \n"
-" __global const float * elements,\n"
-" __global float * diag_M_inv,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-" {\n"
-" float dot_prod = 0.0f;\n"
-" float temp = 0.0f;\n"
-" unsigned int row_end = row_indices[row+1];\n"
-" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-" {\n"
-" temp = elements[i];\n"
-" dot_prod += temp * temp;\n"
-" }\n"
-" diag_M_inv[row] = 1.0f / sqrt(dot_prod);\n"
-" }\n"
-"}\n"
-; //compressed_matrix_align1_row_scaling_2
-
-const char * const compressed_matrix_align1_jacobi_precond =
-"__kernel void jacobi_precond(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const unsigned int * column_indices, \n"
-" __global const float * elements,\n"
-" __global float * diag_M_inv,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-" {\n"
-" float diag = 1.0f;\n"
-" unsigned int row_end = row_indices[row+1];\n"
-" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-" {\n"
-" if (row == column_indices[i])\n"
-" {\n"
-" diag = elements[i];\n"
-" break;\n"
-" }\n"
-" }\n"
-" diag_M_inv[row] = 1.0f / diag;\n"
-" }\n"
-"}\n"
-; //compressed_matrix_align1_jacobi_precond
-
-const char * const compressed_matrix_align1_row_scaling_1 =
-"__kernel void row_scaling_1(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const unsigned int * column_indices, \n"
-" __global const float * elements,\n"
-" __global float * diag_M_inv,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-" {\n"
-" float dot_prod = 0.0f;\n"
-" unsigned int row_end = row_indices[row+1];\n"
-" for (unsigned int i = row_indices[row]; i < row_end; ++i)\n"
-" dot_prod += fabs(elements[i]);\n"
-" diag_M_inv[row] = 1.0f / dot_prod;\n"
-" }\n"
-"}\n"
-; //compressed_matrix_align1_row_scaling_1
-
-const char * const compressed_matrix_align1_lu_forward =
-" \n"
-"// compute y in Ly = z for incomplete LU factorizations of a sparse matrix in compressed format\n"
-"__kernel void lu_forward(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const unsigned int * column_indices, \n"
-" __global const float * elements,\n"
-" __local int * buffer, \n"
-" __local float * vec_entries, //a memory block from vector\n"
-" __global float * vector,\n"
-" unsigned int size) \n"
-"{\n"
-" int waiting_for; //block index that must be finished before the current thread can start\n"
-" unsigned int waiting_for_index;\n"
-" int block_offset;\n"
-" unsigned int col;\n"
-" unsigned int row;\n"
-" unsigned int row_index_end;\n"
-" \n"
-" //backward substitution: one thread per row in blocks of get_global_size(0)\n"
-" for (unsigned int block_num = 0; block_num <= size / get_global_size(0); ++block_num)\n"
-" {\n"
-" block_offset = block_num * get_global_size(0);\n"
-" row = block_offset + get_global_id(0);\n"
-" buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"
-" waiting_for = -1;\n"
-" if (row < size)\n"
-" {\n"
-" vec_entries[get_global_id(0)] = vector[row];\n"
-" waiting_for_index = row_indices[row];\n"
-" row_index_end = row_indices[row+1];\n"
-" }\n"
-" \n"
-" if (get_global_id(0) == 0)\n"
-" buffer[get_global_size(0)] = 1;\n"
-" //try to eliminate all lines in the block. \n"
-" //in worst case scenarios, in each step only one line can be substituted, thus loop\n"
-" for (unsigned int k = 0; k<get_global_size(0); ++k)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (row < size) //valid index?\n"
-" {\n"
-" if (waiting_for >= 0)\n"
-" {\n"
-" if (buffer[waiting_for] == 1)\n"
-" waiting_for = -1;\n"
-" }\n"
-" \n"
-" if (waiting_for == -1) //substitution not yet done, check whether possible\n"
-" {\n"
-" //check whether reduction is possible:\n"
-" for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"
-" {\n"
-" col = column_indices[j];\n"
-" if (col < block_offset) //index valid, but not from current block\n"
-" vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"
-" else if (col < row) //index is from current block\n"
-" {\n"
-" if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"
-" {\n"
-" waiting_for = col - block_offset;\n"
-" waiting_for_index = j;\n"
-" break;\n"
-" }\n"
-" else //updated entry is available in shared memory:\n"
-" vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"
-" }\n"
-" }\n"
-" \n"
-" if (waiting_for == -1) //this row is done\n"
-" {\n"
-" buffer[get_global_id(0)] = 1;\n"
-" waiting_for = -2; //magic number: thread is finished\n"
-" }\n"
-" } \n"
-" } //row < size\n"
-" else\n"
-" buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"
-" ///////// check whether all threads are done. If yes, exit loop /////////////\n"
-" \n"
-" if (buffer[get_global_id(0)] == 0)\n"
-" buffer[get_global_size(0)] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" \n"
-" if (buffer[get_global_size(0)] > 0) //all threads break this loop simultaneously\n"
-" break;\n"
-" if (get_global_id(0) == 0)\n"
-" buffer[get_global_size(0)] = 1;\n"
-" } //for k\n"
-" \n"
-" //write to vector:\n"
-" if (row < size)\n"
-" vector[row] = vec_entries[get_global_id(0)];\n"
-" \n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" } //for block_num\n"
-"}\n"
-; //compressed_matrix_align1_lu_forward
-
-const char * const compressed_matrix_align1_bicgstab_kernel2 =
-"void helper_bicgstab_kernel2_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-" for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (get_local_id(0) < stride)\n"
-" tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"
-" }\n"
-"}\n"
-"//////// inner products:\n"
-"float bicgstab_kernel2_inner_prod(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size,\n"
-" __local float * tmp_buffer)\n"
-"{\n"
-" float tmp = 0;\n"
-" unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"
-" for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"
-" {\n"
-" if (i < size)\n"
-" tmp += vec1[i] * vec2[i];\n"
-" }\n"
-" tmp_buffer[get_local_id(0)] = tmp;\n"
-" \n"
-" helper_bicgstab_kernel2_parallel_reduction(tmp_buffer);\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" return tmp_buffer[0];\n"
-"}\n"
-"__kernel void bicgstab_kernel2(\n"
-" __global const float * tmp0,\n"
-" __global const float * tmp1,\n"
-" __global const float * r0star, \n"
-" __global const float * s, \n"
-" __global float * p, \n"
-" __global float * result,\n"
-" __global float * residual,\n"
-" __global const float * alpha,\n"
-" __global float * ip_rr0star,\n"
-" __global float * error_estimate,\n"
-" __local float * tmp_buffer,\n"
-" unsigned int size) \n"
-"{ \n"
-" float omega_local = bicgstab_kernel2_inner_prod(tmp1, s, size, tmp_buffer) / bicgstab_kernel2_inner_prod(tmp1, tmp1, size, tmp_buffer);\n"
-" float alpha_local = alpha[0];\n"
-" \n"
-" //result += alpha * p + omega * s;\n"
-" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-" result[i] += alpha_local * p[i] + omega_local * s[i];\n"
-" //residual = s - omega * tmp1;\n"
-" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-" residual[i] = s[i] - omega_local * tmp1[i];\n"
-" //new_ip_rr0star = viennacl::linalg::inner_prod(residual, r0star);\n"
-" float new_ip_rr0star = bicgstab_kernel2_inner_prod(residual, r0star, size, tmp_buffer);\n"
-" float beta = (new_ip_rr0star / ip_rr0star[0]) * (alpha_local / omega_local);\n"
-" \n"
-" //p = residual + beta * (p - omega*tmp0);\n"
-" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-" p[i] = residual[i] + beta * (p[i] - omega_local * tmp0[i]);\n"
-" //compute norm of residual:\n"
-" float new_error_estimate = bicgstab_kernel2_inner_prod(residual, residual, size, tmp_buffer);\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" //update values:\n"
-" if (get_global_id(0) == 0)\n"
-" {\n"
-" error_estimate[0] = new_error_estimate;\n"
-" ip_rr0star[0] = new_ip_rr0star;\n"
-" }\n"
-"}\n"
-; //compressed_matrix_align1_bicgstab_kernel2
-
-const char * const compressed_matrix_align1_lu_backward =
-"// compute x in Ux = y for incomplete LU factorizations of a sparse matrix in compressed format\n"
-"__kernel void lu_backward(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const unsigned int * column_indices, \n"
-" __global const float * elements,\n"
-" __local int * buffer, \n"
-" __local float * vec_entries, //a memory block from vector\n"
-" __global float * vector,\n"
-" unsigned int size) \n"
-"{\n"
-" int waiting_for; //block index that must be finished before the current thread can start\n"
-" unsigned int waiting_for_index;\n"
-" unsigned int block_offset;\n"
-" unsigned int col;\n"
-" unsigned int row;\n"
-" unsigned int row_index_end;\n"
-" float diagonal_entry = 42;\n"
-" \n"
-" //forward substitution: one thread per row in blocks of get_global_size(0)\n"
-" for (int block_num = size / get_global_size(0); block_num > -1; --block_num)\n"
-" {\n"
-" block_offset = block_num * get_global_size(0);\n"
-" row = block_offset + get_global_id(0);\n"
-" buffer[get_global_id(0)] = 0; //set flag to 'undone'\n"
-" waiting_for = -1;\n"
-" \n"
-" if (row < size)\n"
-" {\n"
-" vec_entries[get_global_id(0)] = vector[row];\n"
-" waiting_for_index = row_indices[row];\n"
-" row_index_end = row_indices[row+1];\n"
-" diagonal_entry = column_indices[waiting_for_index];\n"
-" }\n"
-" \n"
-" if (get_global_id(0) == 0)\n"
-" buffer[get_global_size(0)] = 1;\n"
-" //try to eliminate all lines in the block. \n"
-" //in worst case scenarios, in each step only one line can be substituted, thus loop\n"
-" for (unsigned int k = 0; k<get_global_size(0); ++k)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (row < size) //valid index?\n"
-" {\n"
-" if (waiting_for >= 0)\n"
-" {\n"
-" if (buffer[waiting_for] == 1)\n"
-" waiting_for = -1;\n"
-" }\n"
-" \n"
-" if (waiting_for == -1) //substitution not yet done, check whether possible\n"
-" {\n"
-" //check whether reduction is possible:\n"
-" for (unsigned int j = waiting_for_index; j < row_index_end; ++j)\n"
-" {\n"
-" col = column_indices[j];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (col >= block_offset + get_global_size(0)) //index valid, but not from current block\n"
-" vec_entries[get_global_id(0)] -= elements[j] * vector[col];\n"
-" else if (col > row) //index is from current block\n"
-" {\n"
-" if (buffer[col - block_offset] == 0) //entry is not yet calculated\n"
-" {\n"
-" waiting_for = col - block_offset;\n"
-" waiting_for_index = j;\n"
-" break;\n"
-" }\n"
-" else //updated entry is available in shared memory:\n"
-" vec_entries[get_global_id(0)] -= elements[j] * vec_entries[col - block_offset];\n"
-" }\n"
-" else if (col == row)\n"
-" diagonal_entry = elements[j];\n"
-" }\n"
-" \n"
-" if (waiting_for == -1) //this row is done\n"
-" {\n"
-" if (row == 0)\n"
-" vec_entries[get_global_id(0)] /= elements[0];\n"
-" else\n"
-" vec_entries[get_global_id(0)] /= diagonal_entry;\n"
-" buffer[get_global_id(0)] = 1;\n"
-" waiting_for = -2; //magic number: thread is finished\n"
-" }\n"
-" } \n"
-" } //row < size\n"
-" else\n"
-" buffer[get_global_id(0)] = 1; //work done (because there is no work to be done at all...)\n"
-" \n"
-" ///////// check whether all threads are done. If yes, exit loop /////////////\n"
-" if (buffer[get_global_id(0)] == 0)\n"
-" buffer[get_global_size(0)] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" \n"
-" if (buffer[get_global_size(0)] > 0) //all threads break the loop simultaneously\n"
-" break;\n"
-" if (get_global_id(0) == 0)\n"
-" buffer[get_global_size(0)] = 1;\n"
-" } //for k\n"
-" if (row < size)\n"
-" vector[row] = vec_entries[get_global_id(0)];\n"
-" //vector[row] = diagonal_entry;\n"
-" \n"
-" //if (row == 0)\n"
-" //vector[0] = diagonal_entry;\n"
-" //vector[0] = elements[0];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" } //for block_num\n"
-"}\n"
-; //compressed_matrix_align1_lu_backward
-
-const char * const compressed_matrix_align1_bicgstab_kernel1 =
-"void helper_bicgstab_kernel1_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-" for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (get_local_id(0) < stride)\n"
-" tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"
-" }\n"
-"}\n"
-"//////// inner products:\n"
-"float bicgstab_kernel1_inner_prod(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size,\n"
-" __local float * tmp_buffer)\n"
-"{\n"
-" float tmp = 0;\n"
-" unsigned int i_end = ((size - 1) / get_local_size(0) + 1) * get_local_size(0);\n"
-" for (unsigned int i = get_local_id(0); i < i_end; i += get_local_size(0))\n"
-" {\n"
-" if (i < size)\n"
-" tmp += vec1[i] * vec2[i];\n"
-" }\n"
-" tmp_buffer[get_local_id(0)] = tmp;\n"
-" \n"
-" helper_bicgstab_kernel1_parallel_reduction(tmp_buffer);\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" return tmp_buffer[0];\n"
-"}\n"
-"__kernel void bicgstab_kernel1(\n"
-" __global const float * tmp0,\n"
-" __global const float * r0star, \n"
-" __global const float * residual,\n"
-" __global float * s,\n"
-" __global float * alpha,\n"
-" __global const float * ip_rr0star,\n"
-" __local float * tmp_buffer,\n"
-" unsigned int size) \n"
-"{ \n"
-" float alpha_local = ip_rr0star[0] / bicgstab_kernel1_inner_prod(tmp0, r0star, size, tmp_buffer);\n"
-" \n"
-" for (unsigned int i = get_local_id(0); i < size; i += get_local_size(0))\n"
-" s[i] = residual[i] - alpha_local * tmp0[i];\n"
-" \n"
-" if (get_global_id(0) == 0)\n"
-" alpha[0] = alpha_local;\n"
-"}\n"
-; //compressed_matrix_align1_bicgstab_kernel1
-
-const char * const compressed_matrix_align8_vec_mul =
-"__kernel void vec_mul(\n"
-" __global const unsigned int * row_indices,\n"
-" __global const uint8 * column_indices, \n"
-" __global const float8 * elements,\n"
-" __global const float * vector, \n"
-" __global float * result,\n"
-" unsigned int size)\n"
-"{ \n"
-" float dot_prod;\n"
-" unsigned int start, next_stop;\n"
-" uint8 col_idx;\n"
-" float8 tmp_vec;\n"
-" float8 tmp_entries;\n"
-" for (unsigned int row = get_global_id(0); row < size; row += get_global_size(0))\n"
-" {\n"
-" dot_prod = 0.0f;\n"
-" start = row_indices[row] / 8;\n"
-" next_stop = row_indices[row+1] / 8;\n"
-" for (unsigned int i = start; i < next_stop; ++i)\n"
-" {\n"
-" col_idx = column_indices[i];\n"
-" tmp_entries = elements[i];\n"
-" tmp_vec.s0 = vector[col_idx.s0];\n"
-" tmp_vec.s1 = vector[col_idx.s1];\n"
-" tmp_vec.s2 = vector[col_idx.s2];\n"
-" tmp_vec.s3 = vector[col_idx.s3];\n"
-" tmp_vec.s4 = vector[col_idx.s4];\n"
-" tmp_vec.s5 = vector[col_idx.s5];\n"
-" tmp_vec.s6 = vector[col_idx.s6];\n"
-" tmp_vec.s7 = vector[col_idx.s7];\n"
-" dot_prod += dot(tmp_entries.lo, tmp_vec.lo);\n"
-" dot_prod += dot(tmp_entries.hi, tmp_vec.hi);\n"
-" }\n"
-" result[row] = dot_prod;\n"
-" }\n"
-"}\n"
-; //compressed_matrix_align8_vec_mul
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/coordinate_matrix_kernels.h b/viennacl/linalg/kernels/coordinate_matrix_kernels.h
deleted file mode 100644
index 7a149df..0000000
--- a/viennacl/linalg/kernels/coordinate_matrix_kernels.h
+++ /dev/null
@@ -1,142 +0,0 @@
-#ifndef _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/coordinate_matrix_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct coordinate_matrix;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct coordinate_matrix<float, 128>
- {
- static std::string program_name()
- {
- return "f_coordinate_matrix_128";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(coordinate_matrix_align1_vec_mul);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct coordinate_matrix<float, 1>
- {
- static std::string program_name()
- {
- return "f_coordinate_matrix_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(coordinate_matrix_align1_vec_mul);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct coordinate_matrix<double, 128>
- {
- static std::string program_name()
- {
- return "d_coordinate_matrix_128";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(coordinate_matrix_align1_vec_mul, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct coordinate_matrix<double, 1>
- {
- static std::string program_name()
- {
- return "d_coordinate_matrix_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(coordinate_matrix_align1_vec_mul, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("vec_mul");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/coordinate_matrix_source.h b/viennacl/linalg/kernels/coordinate_matrix_source.h
deleted file mode 100644
index 6f05006..0000000
--- a/viennacl/linalg/kernels/coordinate_matrix_source.h
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_
-#define _VIENNACL_COORDINATE_MATRIX_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const coordinate_matrix_align1_vec_mul =
-"//segmented parallel reduction. At present restricted to up to 256 threads\n"
-"void segmented_parallel_reduction(unsigned int row, \n"
-" float val, \n"
-" __local unsigned int * shared_rows, \n"
-" __local float * inter_results) \n"
-"{ \n"
-" //barrier(CLK_LOCAL_MEM_FENCE); \n"
-" shared_rows[get_local_id(0)] = row; \n"
-" inter_results[get_local_id(0)] = val; \n"
-" float left = 0;\n"
-" \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 1 && row == shared_rows[get_local_id(0) - 1] ) { left = inter_results[get_local_id(0) - 1]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 2 && row == shared_rows[get_local_id(0) - 2] ) { left = inter_results[get_local_id(0) - 2]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 4 && row == shared_rows[get_local_id(0) - 4] ) { left = inter_results[get_local_id(0) - 4]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 8 && row == shared_rows[get_local_id(0) - 8] ) { left = inter_results[get_local_id(0) - 8]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 16 && row == shared_rows[get_local_id(0) - 16] ) { left = inter_results[get_local_id(0) - 16]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 32 && row == shared_rows[get_local_id(0) - 32] ) { left = inter_results[get_local_id(0) - 32]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 64 && row == shared_rows[get_local_id(0) - 64] ) { left = inter_results[get_local_id(0) - 64]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" if( get_local_id(0) >= 128 && row == shared_rows[get_local_id(0) - 128] ) { left = inter_results[get_local_id(0) - 128]; } \n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" inter_results[get_local_id(0)] += left; left = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE); \n"
-" //if( get_local_id(0) >= 256 && row == shared_rows[get_local_id(0) - 256] ) { left = inter_results[get_local_id(0) - 256]; } \n"
-" //barrier(CLK_LOCAL_MEM_FENCE); \n"
-" //inter_results[get_local_id(0)] += left; left = 0;\n"
-" //barrier(CLK_LOCAL_MEM_FENCE); \n"
-"}\n"
-"__kernel void vec_mul( \n"
-" __global const uint2 * coords, //(row_index, column_index) \n"
-" __global const float * elements, \n"
-" __global const uint * group_boundaries,\n"
-" __global const float * vector, \n"
-" __global float * result, \n"
-" __local unsigned int * shared_rows, \n"
-" __local float * inter_results) \n"
-"{ \n"
-" uint2 tmp; \n"
-" float val;\n"
-" uint last_index = get_local_size(0) - 1;\n"
-" uint group_start = group_boundaries[get_group_id(0)];\n"
-" uint group_end = group_boundaries[get_group_id(0) + 1];\n"
-" uint k_end = 1 + (group_end - group_start - 1) / get_local_size(0); // -1 in order to have correct behavior if group_end - group_start == j * get_local_size(0)\n"
-" uint local_index = 0;\n"
-" for (uint k = 0; k < k_end; ++k)\n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-" \n"
-" local_index = group_start + k * get_local_size(0) + get_local_id(0); \n"
-" \n"
-" if (local_index < group_end)\n"
-" {\n"
-" tmp = coords[local_index]; \n"
-" val = elements[local_index] * vector[tmp.y]; \n"
-" }\n"
-" else\n"
-" {\n"
-" tmp.x = 0;\n"
-" tmp.y = 0;\n"
-" val = 0;\n"
-" }\n"
-" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-" //check for carry from previous loop run: \n"
-" if (get_local_id(0) == 0 && k > 0)\n"
-" { \n"
-" if (tmp.x == shared_rows[last_index]) \n"
-" val += inter_results[last_index]; \n"
-" else \n"
-" result[shared_rows[last_index]] += inter_results[last_index]; \n"
-" } \n"
-" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-" segmented_parallel_reduction(tmp.x, val, shared_rows, inter_results); //all threads have to enter this function\n"
-" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-" if (get_local_id(0) != last_index &&\n"
-" shared_rows[get_local_id(0)] != shared_rows[get_local_id(0) + 1] &&\n"
-" inter_results[get_local_id(0)] != 0) \n"
-" { \n"
-" result[tmp.x] += inter_results[get_local_id(0)]; \n"
-" }\n"
-" \n"
-" barrier(CLK_GLOBAL_MEM_FENCE | CLK_LOCAL_MEM_FENCE); \n"
-" } //for k\n"
-" \n"
-" if (get_local_id(0) == last_index && inter_results[last_index] != 0) \n"
-" result[tmp.x] += inter_results[last_index]; \n"
-"}\n"
-; //coordinate_matrix_align1_vec_mul
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_col_kernels.h b/viennacl/linalg/kernels/matrix_col_kernels.h
deleted file mode 100644
index 4e308f4..0000000
--- a/viennacl/linalg/kernels/matrix_col_kernels.h
+++ /dev/null
@@ -1,302 +0,0 @@
-#ifndef _VIENNACL_MATRIX_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_col;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_col<float, 16>
- {
- static std::string program_name()
- {
- return "f_matrix_col_16";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_col_align1_unit_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_inplace_sub);
- source.append(matrix_col_align1_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_trans_vec_mul);
- source.append(matrix_col_align1_rank1_update);
- source.append(matrix_col_align1_sub);
- source.append(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace);
- source.append(matrix_col_align1_lu_factorize);
- source.append(matrix_col_align1_add);
- source.append(matrix_col_align1_vec_mul);
- source.append(matrix_col_align1_trans_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_inplace_divide);
- source.append(matrix_col_align1_trans_upper_triangular_substitute_inplace);
- source.append(matrix_col_align1_unit_upper_triangular_substitute_inplace);
- source.append(matrix_col_align1_inplace_add);
- source.append(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_scaled_rank1_update);
- source.append(matrix_col_align1_clear);
- source.append(matrix_col_align1_cpu_inplace_mult);
- source.append(matrix_col_align1_inplace_mult);
- source.append(matrix_col_align1_upper_triangular_substitute_inplace);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct matrix_col<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_col_align1_unit_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_inplace_sub);
- source.append(matrix_col_align1_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_trans_vec_mul);
- source.append(matrix_col_align1_rank1_update);
- source.append(matrix_col_align1_sub);
- source.append(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace);
- source.append(matrix_col_align1_lu_factorize);
- source.append(matrix_col_align1_add);
- source.append(matrix_col_align1_vec_mul);
- source.append(matrix_col_align1_trans_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_inplace_divide);
- source.append(matrix_col_align1_trans_upper_triangular_substitute_inplace);
- source.append(matrix_col_align1_unit_upper_triangular_substitute_inplace);
- source.append(matrix_col_align1_inplace_add);
- source.append(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace);
- source.append(matrix_col_align1_scaled_rank1_update);
- source.append(matrix_col_align1_clear);
- source.append(matrix_col_align1_cpu_inplace_mult);
- source.append(matrix_col_align1_inplace_mult);
- source.append(matrix_col_align1_upper_triangular_substitute_inplace);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_col<double, 16>
- {
- static std::string program_name()
- {
- return "d_matrix_col_16";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lu_factorize, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_scaled_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_clear, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_cpu_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_upper_triangular_substitute_inplace, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct matrix_col<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_lu_factorize, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_scaled_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_clear, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_cpu_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_col_align1_upper_triangular_substitute_inplace, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_col_source.h b/viennacl/linalg/kernels/matrix_col_source.h
deleted file mode 100644
index 17fd4e8..0000000
--- a/viennacl/linalg/kernels/matrix_col_source.h
+++ /dev/null
@@ -1,404 +0,0 @@
-#ifndef _VIENNACL_MATRIX_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_col_align1_unit_lower_triangular_substitute_inplace =
-"__kernel void unit_lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = vector[row];\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"
-" }\n"
-"}\n"
-; //matrix_col_align1_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_inplace_sub =
-"__kernel void inplace_sub(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i];\n"
-"}\n"
-; //matrix_col_align1_inplace_sub
-
-const char * const matrix_col_align1_lower_triangular_substitute_inplace =
-"__kernel void lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" if (get_global_id(0) == 0)\n"
-" vector[row] /= matrix[row+row*matrix_internal_rows];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = vector[row];\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[row * matrix_internal_rows + elim];\n"
-" }\n"
-"}\n"
-; //matrix_col_align1_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_trans_vec_mul =
-"__kernel void trans_vec_mul(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global const float * vector, \n"
-" __global float * result) \n"
-"{ \n"
-" //row and col indicate indices within transposed matrix\n"
-" for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"
-" {\n"
-" float dot_prod2 = 0.0f;\n"
-" for (unsigned int col = 0; col < matrix_rows; ++col)\n"
-" dot_prod2 += matrix[row * matrix_internal_rows + col] * vector[col];\n"
-" result[row] = dot_prod2;\n"
-" }\n"
-"}\n"
-; //matrix_col_align1_trans_vec_mul
-
-const char * const matrix_col_align1_rank1_update =
-"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"
-"__kernel void rank1_update(\n"
-" __global float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global const float * vector1, \n"
-" __global const float * vector2) \n"
-"{ \n"
-" float tmp;\n"
-" for (unsigned int row= get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-" {\n"
-" tmp = vector1[row];\n"
-" for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-" matrix[row + col * matrix_internal_rows] += tmp * vector2[col];\n"
-" }\n"
-"}\n"
-; //matrix_col_align1_rank1_update
-
-const char * const matrix_col_align1_sub =
-"__kernel void sub(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2, \n"
-" __global float * result,\n"
-" unsigned int size)\n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //matrix_col_align1_sub
-
-const char * const matrix_col_align1_trans_unit_upper_triangular_substitute_inplace =
-"//transposed lower triangular matrix\n"
-"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[row + elim * matrix_internal_rows]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_col_align1_trans_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_col_align1_lu_factorize =
-"__kernel void lu_factorize(\n"
-" __global float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols) \n"
-"{ \n"
-" float temp;\n"
-" for (unsigned int i=1; i<matrix_rows; ++i)\n"
-" {\n"
-" for (unsigned int k=0; k<i; ++k)\n"
-" {\n"
-" if (get_global_id(0) == 0)\n"
-" matrix[i + k*matrix_internal_rows] /= matrix[k + k*matrix_internal_rows];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = matrix[i + k*matrix_internal_rows];\n"
-" \n"
-" //parallel subtraction:\n"
-" for (unsigned int j=k+1 + get_global_id(0); j<matrix_cols; j += get_global_size(0))\n"
-" matrix[i + j*matrix_internal_rows] -= temp * matrix[k + j*matrix_internal_rows];\n"
-" }\n"
-" }\n"
-"} \n"
-; //matrix_col_align1_lu_factorize
-
-const char * const matrix_col_align1_add =
-"__kernel void add(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2, \n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //matrix_col_align1_add
-
-const char * const matrix_col_align1_vec_mul =
-"__kernel void vec_mul(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global const float * vector, \n"
-" __global float * result) \n"
-"{ \n"
-" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-" {\n"
-" float dot_prod = 0.0f;\n"
-" for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-" dot_prod += matrix[row + col*matrix_internal_rows] * vector[col];\n"
-" result[row] = dot_prod;\n"
-" }\n"
-"}\n"
-; //matrix_col_align1_vec_mul
-
-const char * const matrix_col_align1_trans_lower_triangular_substitute_inplace =
-"__kernel void trans_lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" if (get_global_id(0) == 0)\n"
-" vector[row] /= matrix[row+row*matrix_internal_rows];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = vector[row];\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_col_align1_trans_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_inplace_divide =
-"__kernel void inplace_divide(\n"
-" __global float * vec,\n"
-" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] /= factor;\n"
-"}\n"
-; //matrix_col_align1_inplace_divide
-
-const char * const matrix_col_align1_trans_upper_triangular_substitute_inplace =
-"//transposed lower triangular matrix\n"
-"__kernel void trans_upper_triangular_substitute_inplace(\n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_global_id(0) == 0) \n"
-" vector[row] /= matrix[row + row*matrix_internal_rows]; \n"
-" \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[row + elim * matrix_internal_rows]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_col_align1_trans_upper_triangular_substitute_inplace
-
-const char * const matrix_col_align1_unit_upper_triangular_substitute_inplace =
-"__kernel void unit_upper_triangular_substitute_inplace( \n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[elim + row * matrix_internal_rows]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_col_align1_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_col_align1_inplace_add =
-"__kernel void inplace_add(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] += vec2[i];\n"
-"}\n"
-; //matrix_col_align1_inplace_add
-
-const char * const matrix_col_align1_trans_unit_lower_triangular_substitute_inplace =
-"\n"
-"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"\n"
-" temp = vector[row];\n"
-"\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[elim * matrix_internal_rows + row];\n"
-" }\n"
-"}\n"
-"\n"
-"\n"
-; //matrix_col_align1_trans_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_col_align1_scaled_rank1_update =
-"__kernel void scaled_rank1_update(\n"
-" __global float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" float val,\n"
-" __global const float * vector1, \n"
-" __global const float * vector2) \n"
-"{ \n"
-" float tmp;\n"
-" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-" {\n"
-" tmp = val * vector1[row];\n"
-" for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-" matrix[row + col*matrix_internal_rows] += tmp * vector2[col];\n"
-" }\n"
-"}\n"
-; //matrix_col_align1_scaled_rank1_update
-
-const char * const matrix_col_align1_clear =
-"__kernel void clear(\n"
-" __global float * vec,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] = 0;\n"
-"}\n"
-; //matrix_col_align1_clear
-
-const char * const matrix_col_align1_cpu_inplace_mult =
-"__kernel void cpu_inplace_mult(\n"
-" __global float * vec,\n"
-" float factor, \n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-; //matrix_col_align1_cpu_inplace_mult
-
-const char * const matrix_col_align1_inplace_mult =
-"__kernel void inplace_mult(\n"
-" __global float * vec,\n"
-" __global const float * fac, \n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-; //matrix_col_align1_inplace_mult
-
-const char * const matrix_col_align1_upper_triangular_substitute_inplace =
-"__kernel void upper_triangular_substitute_inplace( \n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_global_id(0) == 0) \n"
-" vector[row] /= matrix[row + row*matrix_internal_rows]; \n"
-" \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[elim + row * matrix_internal_rows]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_col_align1_upper_triangular_substitute_inplace
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h
deleted file mode 100644
index 7a9ec40..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_col_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_col_col_col;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_col_col_col<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_col_col_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_col_col_col_align1_prod_TT);
- source.append(matrix_prod_col_col_col_align1_prod_TA);
- source.append(matrix_prod_col_col_col_align1_prod_AA);
- source.append(matrix_prod_col_col_col_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_col_col_col<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_col_col_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_col_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h b/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h
deleted file mode 100644
index fd6ece1..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_col_col_col_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_TT
-
-const char * const matrix_prod_col_col_col_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_TA
-
-const char * const matrix_prod_col_col_col_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_AA
-
-const char * const matrix_prod_col_col_col_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_col_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h
deleted file mode 100644
index 42d912e..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_col_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_col_col_row;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_col_col_row<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_col_col_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_col_col_row_align1_prod_TT);
- source.append(matrix_prod_col_col_row_align1_prod_TA);
- source.append(matrix_prod_col_col_row_align1_prod_AA);
- source.append(matrix_prod_col_col_row_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_col_col_row<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_col_col_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_col_row_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h b/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h
deleted file mode 100644
index a59293d..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_col_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_COL_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_col_col_row_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_TT
-
-const char * const matrix_prod_col_col_row_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_TA
-
-const char * const matrix_prod_col_col_row_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_AA
-
-const char * const matrix_prod_col_col_row_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_col_row_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h
deleted file mode 100644
index 6804a44..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_row_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_col_row_col;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_col_row_col<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_col_row_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_col_row_col_align1_prod_TT);
- source.append(matrix_prod_col_row_col_align1_prod_TA);
- source.append(matrix_prod_col_row_col_align1_prod_AA);
- source.append(matrix_prod_col_row_col_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_col_row_col<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_col_row_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_col_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h b/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h
deleted file mode 100644
index 4df8697..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_col_row_col_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_TT
-
-const char * const matrix_prod_col_row_col_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_TA
-
-const char * const matrix_prod_col_row_col_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_AA
-
-const char * const matrix_prod_col_row_col_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...col_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_col_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h
deleted file mode 100644
index 7553a7b..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_col_row_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_col_row_row;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_col_row_row<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_col_row_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_col_row_row_align1_prod_TT);
- source.append(matrix_prod_col_row_row_align1_prod_TA);
- source.append(matrix_prod_col_row_row_align1_prod_AA);
- source.append(matrix_prod_col_row_row_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_col_row_row<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_col_row_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_col_row_row_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h b/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h
deleted file mode 100644
index a9829b3..0000000
--- a/viennacl/linalg/kernels/matrix_prod_col_row_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_COL_ROW_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_col_row_row_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_TT
-
-const char * const matrix_prod_col_row_row_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_rows;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_rows + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_TA
-
-const char * const matrix_prod_col_row_row_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_AA
-
-const char * const matrix_prod_col_row_row_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...col_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_rows;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_rows;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_col_row_row_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h
deleted file mode 100644
index 4156a2f..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_col_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_row_col_col;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_row_col_col<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_row_col_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_row_col_col_align1_prod_TT);
- source.append(matrix_prod_row_col_col_align1_prod_TA);
- source.append(matrix_prod_row_col_col_align1_prod_AA);
- source.append(matrix_prod_row_col_col_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_row_col_col<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_row_col_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_col_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h b/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h
deleted file mode 100644
index ac303b2..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_row_col_col_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_TT
-
-const char * const matrix_prod_row_col_col_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_TA
-
-const char * const matrix_prod_row_col_col_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_AA
-
-const char * const matrix_prod_row_col_col_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_col_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h
deleted file mode 100644
index 1c30743..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_col_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_row_col_row;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_row_col_row<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_row_col_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_row_col_row_align1_prod_TT);
- source.append(matrix_prod_row_col_row_align1_prod_TA);
- source.append(matrix_prod_row_col_row_align1_prod_AA);
- source.append(matrix_prod_row_col_row_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_row_col_row<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_row_col_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_col_row_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h b/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h
deleted file mode 100644
index 736dd43..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_col_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_COL_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_row_col_row_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_TT
-
-const char * const matrix_prod_row_col_row_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_TA
-
-const char * const matrix_prod_row_col_row_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_rows;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_rows;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_AA
-
-const char * const matrix_prod_row_col_row_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...col_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_rows;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_rows + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_col_row_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h
deleted file mode 100644
index 8c9a094..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_col_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_row_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_row_row_col;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_row_row_col<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_row_row_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_row_row_col_align1_prod_TT);
- source.append(matrix_prod_row_row_col_align1_prod_TA);
- source.append(matrix_prod_row_row_col_align1_prod_AA);
- source.append(matrix_prod_row_row_col_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_row_row_col<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_row_row_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_col_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h b/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h
deleted file mode 100644
index a012c0d..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_col_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_row_row_col_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_TT
-
-const char * const matrix_prod_row_row_col_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_TA
-
-const char * const matrix_prod_row_row_col_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_AA
-
-const char * const matrix_prod_row_row_col_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...col_major, A...row_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) + get_global_id(1) * C_internal_rows] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_col_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h b/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h
deleted file mode 100644
index 5d43aae..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_row_kernels.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_prod_row_row_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_prod_row_row_row;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_prod_row_row_row<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_prod_row_row_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_prod_row_row_row_align1_prod_TT);
- source.append(matrix_prod_row_row_row_align1_prod_TA);
- source.append(matrix_prod_row_row_row_align1_prod_AA);
- source.append(matrix_prod_row_row_row_align1_prod_AT);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_prod_row_row_row<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_prod_row_row_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_TT, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_TA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_AA, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_prod_row_row_row_align1_prod_AT, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("prod_TT");
- prog_.add_kernel("prod_TA");
- prog_.add_kernel("prod_AA");
- prog_.add_kernel("prod_AT");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h b/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h
deleted file mode 100644
index 1cb1f90..0000000
--- a/viennacl/linalg/kernels/matrix_prod_row_row_row_source.h
+++ /dev/null
@@ -1,261 +0,0 @@
-#ifndef _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_PROD_ROW_ROW_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_prod_row_row_row_align1_prod_TT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_TT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_TT
-
-const char * const matrix_prod_row_row_row_align1_prod_TA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A^T * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_TA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size;\n"
-" int aStep = block_size * A_internal_cols;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_rows / block_size;\n"
-" if (block_num * block_size != A_rows)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id + col_thread_id * A_internal_cols;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_rows && get_global_id(0) < A_cols)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_cols && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_TA
-
-const char * const matrix_prod_row_row_row_align1_prod_AA =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_AA(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size;\n"
-" int bStep = block_size * B_internal_cols;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id * B_internal_cols + col_thread_id;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_rows) && get_global_id(1) < B_cols )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_cols)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_AA
-
-const char * const matrix_prod_row_row_row_align1_prod_AT =
-"// file automatically generated - do not edit!\n"
-"// matrix-matrix multiplication C = A * B^T\n"
-"// matrix layouts: C...row_major, A...row_major, B...row_major\n"
-"__kernel void prod_AT(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global const float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols,\n"
-" __global float * C,\n"
-" unsigned int C_rows,\n"
-" unsigned int C_cols,\n"
-" unsigned int C_internal_rows,\n"
-" unsigned int C_internal_cols,\n"
-" __local float * bufA,\n"
-" __local float * bufB) \n"
-"{ \n"
-" int block_size = get_local_size(0);\n"
-" int row_block_id = get_group_id(0);\n"
-" int col_block_id = get_group_id(1);\n"
-" int row_thread_id = get_local_id(0);\n"
-" int col_thread_id = get_local_id(1);\n"
-" int aBegin = row_block_id * block_size * A_internal_cols;\n"
-" int aStep = block_size;\n"
-" int bBegin = col_block_id * block_size * B_internal_cols;\n"
-" int bStep = block_size;\n"
-" int block_num = A_cols / block_size;\n"
-" if (block_num * block_size != A_cols)\n"
-" ++block_num;\n"
-" float Csub = 0;\n"
-" int aOffset = row_thread_id * A_internal_cols + col_thread_id;\n"
-" int bOffset = row_thread_id + col_thread_id * B_internal_cols;\n"
-" for (int block = 0;\n"
-" block < block_num;\n"
-" ++block)\n"
-" {\n"
-" if (block * block_size + col_thread_id < A_cols && get_global_id(0) < A_rows)\n"
-" bufA[row_thread_id * block_size + col_thread_id] = A[aBegin + aOffset];\n"
-" else\n"
-" bufA[row_thread_id * block_size + col_thread_id] = 0;\n"
-" if ( (block * block_size + row_thread_id < B_cols) && get_global_id(1) < B_rows )\n"
-" bufB[row_thread_id * block_size + col_thread_id] = B[bBegin + bOffset]; \n"
-" else\n"
-" bufB[row_thread_id * block_size + col_thread_id] = 0;\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" for (int k = 0; k < block_size; ++k)\n"
-" Csub += bufA[row_thread_id * block_size + k] * bufB[k * block_size + col_thread_id];\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" aBegin += aStep;\n"
-" bBegin += bStep;\n"
-" }\n"
-" if (get_global_id(0) < A_rows && get_global_id(1) < B_rows)\n"
-" C[get_global_id(0) * C_internal_cols + get_global_id(1)] = Csub;\n"
-"}\n"
-; //matrix_prod_row_row_row_align1_prod_AT
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_row_kernels.h b/viennacl/linalg/kernels/matrix_row_kernels.h
deleted file mode 100644
index 4ef8ba7..0000000
--- a/viennacl/linalg/kernels/matrix_row_kernels.h
+++ /dev/null
@@ -1,302 +0,0 @@
-#ifndef _VIENNACL_MATRIX_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_row;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_row<float, 16>
- {
- static std::string program_name()
- {
- return "f_matrix_row_16";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_row_align1_unit_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_inplace_sub);
- source.append(matrix_row_align1_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_trans_vec_mul);
- source.append(matrix_row_align1_rank1_update);
- source.append(matrix_row_align1_sub);
- source.append(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace);
- source.append(matrix_row_align1_lu_factorize);
- source.append(matrix_row_align1_add);
- source.append(matrix_row_align1_vec_mul);
- source.append(matrix_row_align1_trans_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_inplace_divide);
- source.append(matrix_row_align1_trans_upper_triangular_substitute_inplace);
- source.append(matrix_row_align1_unit_upper_triangular_substitute_inplace);
- source.append(matrix_row_align1_inplace_add);
- source.append(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_scaled_rank1_update);
- source.append(matrix_row_align1_clear);
- source.append(matrix_row_align1_cpu_inplace_mult);
- source.append(matrix_row_align1_inplace_mult);
- source.append(matrix_row_align1_upper_triangular_substitute_inplace);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct matrix_row<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_row_align1_unit_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_inplace_sub);
- source.append(matrix_row_align1_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_trans_vec_mul);
- source.append(matrix_row_align1_rank1_update);
- source.append(matrix_row_align1_sub);
- source.append(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace);
- source.append(matrix_row_align1_lu_factorize);
- source.append(matrix_row_align1_add);
- source.append(matrix_row_align1_vec_mul);
- source.append(matrix_row_align1_trans_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_inplace_divide);
- source.append(matrix_row_align1_trans_upper_triangular_substitute_inplace);
- source.append(matrix_row_align1_unit_upper_triangular_substitute_inplace);
- source.append(matrix_row_align1_inplace_add);
- source.append(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace);
- source.append(matrix_row_align1_scaled_rank1_update);
- source.append(matrix_row_align1_clear);
- source.append(matrix_row_align1_cpu_inplace_mult);
- source.append(matrix_row_align1_inplace_mult);
- source.append(matrix_row_align1_upper_triangular_substitute_inplace);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_row<double, 16>
- {
- static std::string program_name()
- {
- return "d_matrix_row_16";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lu_factorize, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_scaled_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_clear, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_cpu_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_upper_triangular_substitute_inplace, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct matrix_row<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_lu_factorize, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_vec_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_unit_upper_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_trans_unit_lower_triangular_substitute_inplace, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_scaled_rank1_update, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_clear, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_cpu_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_row_align1_upper_triangular_substitute_inplace, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("lower_triangular_substitute_inplace");
- prog_.add_kernel("trans_vec_mul");
- prog_.add_kernel("rank1_update");
- prog_.add_kernel("sub");
- prog_.add_kernel("trans_unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("lu_factorize");
- prog_.add_kernel("add");
- prog_.add_kernel("vec_mul");
- prog_.add_kernel("trans_lower_triangular_substitute_inplace");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("trans_upper_triangular_substitute_inplace");
- prog_.add_kernel("unit_upper_triangular_substitute_inplace");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("trans_unit_lower_triangular_substitute_inplace");
- prog_.add_kernel("scaled_rank1_update");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("upper_triangular_substitute_inplace");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_row_source.h b/viennacl/linalg/kernels/matrix_row_source.h
deleted file mode 100644
index 70ff53b..0000000
--- a/viennacl/linalg/kernels/matrix_row_source.h
+++ /dev/null
@@ -1,415 +0,0 @@
-#ifndef _VIENNACL_MATRIX_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_row_align1_unit_lower_triangular_substitute_inplace =
-"__kernel void unit_lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = vector[row];\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_row_align1_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_inplace_sub =
-"__kernel void inplace_sub(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i];\n"
-"}\n"
-; //matrix_row_align1_inplace_sub
-
-const char * const matrix_row_align1_lower_triangular_substitute_inplace =
-"__kernel void lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" if (get_global_id(0) == 0)\n"
-" vector[row] /= matrix[row+row*matrix_internal_cols];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = vector[row];\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_row_align1_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_trans_vec_mul =
-"__kernel void trans_vec_mul(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global const float * vector, \n"
-" __global float * result) \n"
-"{ \n"
-" //row and col indicate indices within transposed matrix\n"
-" for (unsigned int row = get_global_id(0); row < matrix_cols; row += get_global_size(0))\n"
-" {\n"
-" float dot_prod2 = 0.0f;\n"
-" for (unsigned int col = 0; col < matrix_rows; ++col)\n"
-" dot_prod2 += matrix[row + col*matrix_internal_cols] * vector[col];\n"
-" result[row] = dot_prod2;\n"
-" }\n"
-"}\n"
-; //matrix_row_align1_trans_vec_mul
-
-const char * const matrix_row_align1_rank1_update =
-"//perform a rank-1 update of the matrix, i.e. A += x * x^T\n"
-"__kernel void rank1_update(\n"
-" __global float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global const float * vector1, \n"
-" __global const float * vector2) \n"
-"{ \n"
-" float tmp;\n"
-" unsigned int offset;\n"
-" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-" {\n"
-" tmp = vector1[row];\n"
-" offset = row*matrix_internal_cols;\n"
-" for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-" matrix[offset+col] += tmp * vector2[col];\n"
-" }\n"
-"}\n"
-; //matrix_row_align1_rank1_update
-
-const char * const matrix_row_align1_sub =
-"__kernel void sub(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2, \n"
-" __global float * result,\n"
-" unsigned int size)\n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //matrix_row_align1_sub
-
-const char * const matrix_row_align1_trans_unit_upper_triangular_substitute_inplace =
-"//transposed lower triangular matrix\n"
-"__kernel void trans_unit_upper_triangular_substitute_inplace(\n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_row_align1_trans_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_row_align1_lu_factorize =
-"__kernel void lu_factorize(\n"
-" __global float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols) \n"
-"{ \n"
-" float temp;\n"
-" unsigned rowi;\n"
-" unsigned rowk;\n"
-" for (unsigned int i=1; i<matrix_rows; ++i)\n"
-" {\n"
-" rowi = i * matrix_internal_cols;\n"
-" for (unsigned int k=0; k<i; ++k)\n"
-" {\n"
-" rowk = k * matrix_internal_cols;\n"
-" if (get_global_id(0) == 0)\n"
-" matrix[rowi + k] /= matrix[rowk + k];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = matrix[rowi + k];\n"
-" \n"
-" //parallel subtraction:\n"
-" for (unsigned int j=k+1 + get_global_id(0); j<matrix_rows; j += get_global_size(0))\n"
-" matrix[rowi + j] -= temp * matrix[rowk + j];\n"
-" }\n"
-" }\n"
-"} \n"
-; //matrix_row_align1_lu_factorize
-
-const char * const matrix_row_align1_add =
-"__kernel void add(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2, \n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //matrix_row_align1_add
-
-const char * const matrix_row_align1_vec_mul =
-"\n"
-"\n"
-"\n"
-"__kernel void vec_mul(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global const float * vector, \n"
-" __global float * result) \n"
-"{ \n"
-" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-" {\n"
-" float dot_prod = 0.0f;\n"
-" for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-" dot_prod += matrix[row*matrix_internal_cols + col] * vector[col];\n"
-" result[row] = dot_prod;\n"
-" }\n"
-"}\n"
-"\n"
-"\n"
-; //matrix_row_align1_vec_mul
-
-const char * const matrix_row_align1_trans_lower_triangular_substitute_inplace =
-"__kernel void trans_lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" if (get_global_id(0) == 0)\n"
-" vector[row] /= matrix[row+row*matrix_internal_cols];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" temp = vector[row];\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"
-" }\n"
-"}\n"
-; //matrix_row_align1_trans_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_inplace_divide =
-"__kernel void inplace_divide(\n"
-" __global float * vec,\n"
-" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] /= factor;\n"
-"}\n"
-; //matrix_row_align1_inplace_divide
-
-const char * const matrix_row_align1_trans_upper_triangular_substitute_inplace =
-"//transposed lower triangular matrix\n"
-"__kernel void trans_upper_triangular_substitute_inplace(\n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_global_id(0) == 0) \n"
-" vector[row] /= matrix[row*matrix_internal_cols + row]; \n"
-" \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_row_align1_trans_upper_triangular_substitute_inplace
-
-const char * const matrix_row_align1_unit_upper_triangular_substitute_inplace =
-"__kernel void unit_upper_triangular_substitute_inplace( \n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_row_align1_unit_upper_triangular_substitute_inplace
-
-const char * const matrix_row_align1_inplace_add =
-"__kernel void inplace_add(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] += vec2[i];\n"
-"}\n"
-; //matrix_row_align1_inplace_add
-
-const char * const matrix_row_align1_trans_unit_lower_triangular_substitute_inplace =
-"\n"
-"__kernel void trans_unit_lower_triangular_substitute_inplace(\n"
-" __global const float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector)\n"
-"{\n"
-" float temp;\n"
-" for (int row = 0; row < matrix_rows; ++row)\n"
-" {\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-"\n"
-" temp = vector[row];\n"
-"\n"
-" for (int elim = row + get_global_id(0) + 1; elim < matrix_rows; elim += get_global_size(0))\n"
-" vector[elim] -= temp * matrix[row * matrix_internal_cols + elim];\n"
-" }\n"
-"}\n"
-"\n"
-"\n"
-; //matrix_row_align1_trans_unit_lower_triangular_substitute_inplace
-
-const char * const matrix_row_align1_scaled_rank1_update =
-"__kernel void scaled_rank1_update(\n"
-" __global float * matrix,\n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" float val,\n"
-" __global const float * vector1, \n"
-" __global const float * vector2) \n"
-"{ \n"
-" float tmp;\n"
-" unsigned int offset;\n"
-" for (unsigned int row = get_global_id(0); row < matrix_rows; row += get_global_size(0))\n"
-" {\n"
-" tmp = val * vector1[row];\n"
-" offset = row * matrix_internal_cols;\n"
-" for (unsigned int col = 0; col < matrix_cols; ++col)\n"
-" matrix[offset+col] += tmp * vector2[col];\n"
-" }\n"
-"}\n"
-; //matrix_row_align1_scaled_rank1_update
-
-const char * const matrix_row_align1_clear =
-"__kernel void clear(\n"
-" __global float * vec,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] = 0;\n"
-"}\n"
-; //matrix_row_align1_clear
-
-const char * const matrix_row_align1_cpu_inplace_mult =
-"__kernel void cpu_inplace_mult(\n"
-" __global float * vec,\n"
-" float factor, \n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-; //matrix_row_align1_cpu_inplace_mult
-
-const char * const matrix_row_align1_inplace_mult =
-"__kernel void inplace_mult(\n"
-" __global float * vec,\n"
-" __global const float * fac, \n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-; //matrix_row_align1_inplace_mult
-
-const char * const matrix_row_align1_upper_triangular_substitute_inplace =
-"__kernel void upper_triangular_substitute_inplace( \n"
-" __global const float * matrix, \n"
-" unsigned int matrix_rows,\n"
-" unsigned int matrix_cols,\n"
-" unsigned int matrix_internal_rows,\n"
-" unsigned int matrix_internal_cols,\n"
-" __global float * vector) \n"
-"{ \n"
-" float temp; \n"
-" for (int row = matrix_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_global_id(0) == 0) \n"
-" vector[row] /= matrix[row*matrix_internal_cols + row]; \n"
-" \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = vector[row]; \n"
-" //eliminate column with index 'row' in parallel: \n"
-" for (int elim = get_global_id(0); elim < row; elim += get_global_size(0)) \n"
-" vector[elim] -= temp * matrix[elim * matrix_internal_cols + row]; \n"
-" } \n"
-" \n"
-"}\n"
-; //matrix_row_align1_upper_triangular_substitute_inplace
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h b/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h
deleted file mode 100644
index 26ff158..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_col_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_col_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_solve_col_col;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_solve_col_col<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_solve_col_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_solve_col_col_align1_upper_trans_solve);
- source.append(matrix_solve_col_col_align1_trans_upper_trans_solve);
- source.append(matrix_solve_col_col_align1_unit_lower_solve);
- source.append(matrix_solve_col_col_align1_trans_unit_upper_trans_solve);
- source.append(matrix_solve_col_col_align1_trans_upper_solve);
- source.append(matrix_solve_col_col_align1_unit_lower_trans_solve);
- source.append(matrix_solve_col_col_align1_trans_unit_upper_solve);
- source.append(matrix_solve_col_col_align1_trans_unit_lower_trans_solve);
- source.append(matrix_solve_col_col_align1_lower_trans_solve);
- source.append(matrix_solve_col_col_align1_upper_solve);
- source.append(matrix_solve_col_col_align1_trans_lower_trans_solve);
- source.append(matrix_solve_col_col_align1_lower_solve);
- source.append(matrix_solve_col_col_align1_trans_lower_solve);
- source.append(matrix_solve_col_col_align1_unit_upper_trans_solve);
- source.append(matrix_solve_col_col_align1_unit_upper_solve);
- source.append(matrix_solve_col_col_align1_trans_unit_lower_solve);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_solve_col_col<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_solve_col_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_col_align1_trans_unit_lower_solve, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_col_source.h b/viennacl/linalg/kernels/matrix_solve_col_col_source.h
deleted file mode 100644
index cfff087..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_col_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_solve_col_col_align1_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_trans_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_lower_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_trans_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_upper_solve
-
-const char * const matrix_solve_col_col_align1_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_upper_solve
-
-const char * const matrix_solve_col_col_align1_trans_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_col_col_align1_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_lower_solve
-
-const char * const matrix_solve_col_col_align1_trans_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_lower_solve
-
-const char * const matrix_solve_col_col_align1_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_col_col_align1_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_unit_upper_solve
-
-const char * const matrix_solve_col_col_align1_trans_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...col_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_col_align1_trans_unit_lower_solve
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h b/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h
deleted file mode 100644
index 240a7e6..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_row_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_col_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_solve_col_row;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_solve_col_row<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_solve_col_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_solve_col_row_align1_upper_trans_solve);
- source.append(matrix_solve_col_row_align1_trans_upper_trans_solve);
- source.append(matrix_solve_col_row_align1_unit_lower_solve);
- source.append(matrix_solve_col_row_align1_trans_unit_upper_trans_solve);
- source.append(matrix_solve_col_row_align1_trans_upper_solve);
- source.append(matrix_solve_col_row_align1_unit_lower_trans_solve);
- source.append(matrix_solve_col_row_align1_trans_unit_upper_solve);
- source.append(matrix_solve_col_row_align1_trans_unit_lower_trans_solve);
- source.append(matrix_solve_col_row_align1_lower_trans_solve);
- source.append(matrix_solve_col_row_align1_upper_solve);
- source.append(matrix_solve_col_row_align1_trans_lower_trans_solve);
- source.append(matrix_solve_col_row_align1_lower_solve);
- source.append(matrix_solve_col_row_align1_trans_lower_solve);
- source.append(matrix_solve_col_row_align1_unit_upper_trans_solve);
- source.append(matrix_solve_col_row_align1_unit_upper_solve);
- source.append(matrix_solve_col_row_align1_trans_unit_lower_solve);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_solve_col_row<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_solve_col_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_col_row_align1_trans_unit_lower_solve, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_col_row_source.h b/viennacl/linalg/kernels/matrix_solve_col_row_source.h
deleted file mode 100644
index 60a6be3..0000000
--- a/viennacl/linalg/kernels/matrix_solve_col_row_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_COL_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_solve_col_row_align1_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_trans_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_lower_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_trans_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_upper_solve
-
-const char * const matrix_solve_col_row_align1_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_upper_solve
-
-const char * const matrix_solve_col_row_align1_trans_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_col_row_align1_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_lower_solve
-
-const char * const matrix_solve_col_row_align1_trans_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_lower_solve
-
-const char * const matrix_solve_col_row_align1_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_col_row_align1_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_rows];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_unit_upper_solve
-
-const char * const matrix_solve_col_row_align1_trans_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...col_major, B...row_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_rows + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_col_row_align1_trans_unit_lower_solve
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h b/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h
deleted file mode 100644
index 1ecbafa..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_col_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_COL_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_row_col_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_solve_row_col;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_solve_row_col<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_solve_row_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_solve_row_col_align1_upper_trans_solve);
- source.append(matrix_solve_row_col_align1_trans_upper_trans_solve);
- source.append(matrix_solve_row_col_align1_unit_lower_solve);
- source.append(matrix_solve_row_col_align1_trans_unit_upper_trans_solve);
- source.append(matrix_solve_row_col_align1_trans_upper_solve);
- source.append(matrix_solve_row_col_align1_unit_lower_trans_solve);
- source.append(matrix_solve_row_col_align1_trans_unit_upper_solve);
- source.append(matrix_solve_row_col_align1_trans_unit_lower_trans_solve);
- source.append(matrix_solve_row_col_align1_lower_trans_solve);
- source.append(matrix_solve_row_col_align1_upper_solve);
- source.append(matrix_solve_row_col_align1_trans_lower_trans_solve);
- source.append(matrix_solve_row_col_align1_lower_solve);
- source.append(matrix_solve_row_col_align1_trans_lower_solve);
- source.append(matrix_solve_row_col_align1_unit_upper_trans_solve);
- source.append(matrix_solve_row_col_align1_unit_upper_solve);
- source.append(matrix_solve_row_col_align1_trans_unit_lower_solve);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_solve_row_col<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_solve_row_col_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_col_align1_trans_unit_lower_solve, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_col_source.h b/viennacl/linalg/kernels/matrix_solve_row_col_source.h
deleted file mode 100644
index 132fdf4..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_col_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_COL_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_solve_row_col_align1_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_trans_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_lower_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_trans_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_upper_solve
-
-const char * const matrix_solve_row_col_align1_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_upper_solve
-
-const char * const matrix_solve_row_col_align1_trans_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_rows + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_row_col_align1_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_lower_solve
-
-const char * const matrix_solve_row_col_align1_trans_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_rows] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_lower_solve
-
-const char * const matrix_solve_row_col_align1_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_rows + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_rows + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_row_col_align1_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_unit_upper_solve
-
-const char * const matrix_solve_row_col_align1_trans_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...col_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_rows]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_rows] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_col_align1_trans_unit_lower_solve
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h b/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h
deleted file mode 100644
index 35fa2a1..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_row_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/matrix_solve_row_row_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct matrix_solve_row_row;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct matrix_solve_row_row<float, 1>
- {
- static std::string program_name()
- {
- return "f_matrix_solve_row_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(matrix_solve_row_row_align1_upper_trans_solve);
- source.append(matrix_solve_row_row_align1_trans_upper_trans_solve);
- source.append(matrix_solve_row_row_align1_unit_lower_solve);
- source.append(matrix_solve_row_row_align1_trans_unit_upper_trans_solve);
- source.append(matrix_solve_row_row_align1_trans_upper_solve);
- source.append(matrix_solve_row_row_align1_unit_lower_trans_solve);
- source.append(matrix_solve_row_row_align1_trans_unit_upper_solve);
- source.append(matrix_solve_row_row_align1_trans_unit_lower_trans_solve);
- source.append(matrix_solve_row_row_align1_lower_trans_solve);
- source.append(matrix_solve_row_row_align1_upper_solve);
- source.append(matrix_solve_row_row_align1_trans_lower_trans_solve);
- source.append(matrix_solve_row_row_align1_lower_solve);
- source.append(matrix_solve_row_row_align1_trans_lower_solve);
- source.append(matrix_solve_row_row_align1_unit_upper_trans_solve);
- source.append(matrix_solve_row_row_align1_unit_upper_solve);
- source.append(matrix_solve_row_row_align1_trans_unit_lower_solve);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct matrix_solve_row_row<double, 1>
- {
- static std::string program_name()
- {
- return "d_matrix_solve_row_row_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_lower_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_lower_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_upper_trans_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_unit_upper_solve, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(matrix_solve_row_row_align1_trans_unit_lower_solve, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("upper_trans_solve");
- prog_.add_kernel("trans_upper_trans_solve");
- prog_.add_kernel("unit_lower_solve");
- prog_.add_kernel("trans_unit_upper_trans_solve");
- prog_.add_kernel("trans_upper_solve");
- prog_.add_kernel("unit_lower_trans_solve");
- prog_.add_kernel("trans_unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_trans_solve");
- prog_.add_kernel("lower_trans_solve");
- prog_.add_kernel("upper_solve");
- prog_.add_kernel("trans_lower_trans_solve");
- prog_.add_kernel("lower_solve");
- prog_.add_kernel("trans_lower_solve");
- prog_.add_kernel("unit_upper_trans_solve");
- prog_.add_kernel("unit_upper_solve");
- prog_.add_kernel("trans_unit_lower_solve");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/matrix_solve_row_row_source.h b/viennacl/linalg/kernels/matrix_solve_row_row_source.h
deleted file mode 100644
index c606788..0000000
--- a/viennacl/linalg/kernels/matrix_solve_row_row_source.h
+++ /dev/null
@@ -1,485 +0,0 @@
-#ifndef _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_
-#define _VIENNACL_MATRIX_SOLVE_ROW_ROW_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const matrix_solve_row_row_align1_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_trans_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_lower_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_trans_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_upper_solve
-
-const char * const matrix_solve_row_row_align1_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_upper_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_upper_solve
-
-const char * const matrix_solve_row_row_align1_trans_lower_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_lower_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row + get_group_id(0) * B_internal_cols] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_lower_trans_solve
-
-const char * const matrix_solve_row_row_align1_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_lower_solve
-
-const char * const matrix_solve_row_row_align1_trans_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" if (get_local_id(0) == 0) \n"
-" B[row * B_internal_cols + get_group_id(0)] /= A[row + row*A_internal_cols]; \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_lower_solve
-
-const char * const matrix_solve_row_row_align1_unit_upper_trans_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B^T\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_upper_trans_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row + get_group_id(0) * B_internal_cols]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim + get_group_id(0) * B_internal_cols] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_upper_trans_solve
-
-const char * const matrix_solve_row_row_align1_unit_upper_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void unit_upper_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = A_rows-1; row > -1; --row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = get_local_id(0); elim < row; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim * A_internal_cols + row];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_unit_upper_solve
-
-const char * const matrix_solve_row_row_align1_trans_unit_lower_solve =
-"// file automatically generated - do not edit!\n"
-"// inplace solve A^T \\ B\n"
-"// matrix layouts: A...row_major, B...row_major\n"
-"__kernel void trans_unit_lower_solve(\n"
-" __global const float * A,\n"
-" unsigned int A_rows,\n"
-" unsigned int A_cols,\n"
-" unsigned int A_internal_rows,\n"
-" unsigned int A_internal_cols,\n"
-" __global float * B, \n"
-" unsigned int B_rows,\n"
-" unsigned int B_cols,\n"
-" unsigned int B_internal_rows,\n"
-" unsigned int B_internal_cols)\n"
-"{ \n"
-" float temp; \n"
-" for (int row = 0; row < A_rows; ++row) \n"
-" { \n"
-" barrier(CLK_GLOBAL_MEM_FENCE); \n"
-" temp = B[row * B_internal_cols + get_group_id(0)]; \n"
-" //eliminate column of op(A) with index 'row' in parallel: \n"
-" for (int elim = row + get_local_id(0) + 1; elim < A_rows; elim += get_local_size(0)) \n"
-" B[elim * B_internal_cols + get_group_id(0)] -= temp * A[elim + row * A_internal_cols];\n"
-" }\n"
-"}\n"
-; //matrix_solve_row_row_align1_trans_unit_lower_solve
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/scalar_kernels.h b/viennacl/linalg/kernels/scalar_kernels.h
deleted file mode 100644
index 858398a..0000000
--- a/viennacl/linalg/kernels/scalar_kernels.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef _VIENNACL_SCALAR_KERNELS_HPP_
-#define _VIENNACL_SCALAR_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/scalar_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct scalar;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct scalar<float, 1>
- {
- static std::string program_name()
- {
- return "f_scalar_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(scalar_align1_inplace_sub);
- source.append(scalar_align1_cpu_inplace_div);
- source.append(scalar_align1_cpu_inplace_add);
- source.append(scalar_align1_cpu_sub);
- source.append(scalar_align1_cpu_mul);
- source.append(scalar_align1_sub);
- source.append(scalar_align1_inplace_mul);
- source.append(scalar_align1_cpu_inplace_mul);
- source.append(scalar_align1_mul);
- source.append(scalar_align1_cpu_add);
- source.append(scalar_align1_inplace_div);
- source.append(scalar_align1_add);
- source.append(scalar_align1_cpu_inplace_sub);
- source.append(scalar_align1_inplace_add);
- source.append(scalar_align1_divide);
- source.append(scalar_align1_cpu_div);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("cpu_inplace_div");
- prog_.add_kernel("cpu_inplace_add");
- prog_.add_kernel("cpu_sub");
- prog_.add_kernel("cpu_mul");
- prog_.add_kernel("sub");
- prog_.add_kernel("inplace_mul");
- prog_.add_kernel("cpu_inplace_mul");
- prog_.add_kernel("mul");
- prog_.add_kernel("cpu_add");
- prog_.add_kernel("inplace_div");
- prog_.add_kernel("add");
- prog_.add_kernel("cpu_inplace_sub");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("cpu_div");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct scalar<double, 1>
- {
- static std::string program_name()
- {
- return "d_scalar_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_div, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_mul, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_div, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(scalar_align1_cpu_div, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("cpu_inplace_div");
- prog_.add_kernel("cpu_inplace_add");
- prog_.add_kernel("cpu_sub");
- prog_.add_kernel("cpu_mul");
- prog_.add_kernel("sub");
- prog_.add_kernel("inplace_mul");
- prog_.add_kernel("cpu_inplace_mul");
- prog_.add_kernel("mul");
- prog_.add_kernel("cpu_add");
- prog_.add_kernel("inplace_div");
- prog_.add_kernel("add");
- prog_.add_kernel("cpu_inplace_sub");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("cpu_div");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/scalar_source.h b/viennacl/linalg/kernels/scalar_source.h
deleted file mode 100644
index 0b7504d..0000000
--- a/viennacl/linalg/kernels/scalar_source.h
+++ /dev/null
@@ -1,217 +0,0 @@
-#ifndef _VIENNACL_SCALAR_SOURCE_HPP_
-#define _VIENNACL_SCALAR_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const scalar_align1_inplace_sub =
-" \n"
-"__kernel void inplace_sub(\n"
-" __global float * val1,\n"
-" __global const float * val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 -= *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_sub
-
-const char * const scalar_align1_cpu_inplace_div =
-" \n"
-"__kernel void cpu_inplace_div(\n"
-" __global float * val1,\n"
-" float val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 /= val2;\n"
-"}\n"
-"\n"
-" \n"
-; //scalar_align1_cpu_inplace_div
-
-const char * const scalar_align1_cpu_inplace_add =
-" \n"
-"__kernel void cpu_inplace_add(\n"
-" __global float * val1,\n"
-" float val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 += val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_inplace_add
-
-const char * const scalar_align1_cpu_sub =
-" \n"
-"__kernel void cpu_sub(\n"
-" __global const float * val1,\n"
-" float val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 - val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_sub
-
-const char * const scalar_align1_cpu_mul =
-" \n"
-"__kernel void cpu_mul(\n"
-" __global const float * val1,\n"
-" float val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 * val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_mul
-
-const char * const scalar_align1_sub =
-" \n"
-"__kernel void sub(\n"
-" __global const float * val1,\n"
-" __global const float * val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 - *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_sub
-
-const char * const scalar_align1_inplace_mul =
-" \n"
-"__kernel void inplace_mul(\n"
-" __global float * val1,\n"
-" __global const float * val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 *= *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_mul
-
-const char * const scalar_align1_cpu_inplace_mul =
-" \n"
-"__kernel void cpu_inplace_mul(\n"
-" __global float * val1,\n"
-" float val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 *= val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_inplace_mul
-
-const char * const scalar_align1_mul =
-" \n"
-"__kernel void mul(\n"
-" __global const float * val1,\n"
-" __global const float * val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 * *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_mul
-
-const char * const scalar_align1_cpu_add =
-" \n"
-"__kernel void cpu_add(\n"
-" __global const float * val1,\n"
-" float val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 + val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_add
-
-const char * const scalar_align1_inplace_div =
-" \n"
-"__kernel void inplace_div(\n"
-" __global float * val1,\n"
-" __global const float * val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 /= *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_div
-
-const char * const scalar_align1_add =
-" \n"
-"__kernel void add(\n"
-" __global const float * val1,\n"
-" __global const float * val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 + *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_add
-
-const char * const scalar_align1_cpu_inplace_sub =
-" \n"
-"__kernel void cpu_inplace_sub(\n"
-" __global float * val1,\n"
-" float val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 -= val2;\n"
-"}\n"
-" \n"
-"\n"
-; //scalar_align1_cpu_inplace_sub
-
-const char * const scalar_align1_inplace_add =
-" \n"
-"__kernel void inplace_add(\n"
-" __global float * val1,\n"
-" __global const float * val2) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *val1 += *val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_inplace_add
-
-const char * const scalar_align1_divide =
-" \n"
-"// note: 'div' seems to produce some name clashes with the OpenCL jit-compiler, thus using 'divide'\n"
-"__kernel void divide(\n"
-" __global const float * val1,\n"
-" __global const float * val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 / *val2;\n"
-"}\n"
-"\n"
-" \n"
-; //scalar_align1_divide
-
-const char * const scalar_align1_cpu_div =
-" \n"
-"__kernel void cpu_div(\n"
-" __global const float * val1,\n"
-" float val2, \n"
-" __global float * result) \n"
-"{ \n"
-" if (get_global_id(0) == 0)\n"
-" *result = *val1 / val2;\n"
-"}\n"
-" \n"
-; //scalar_align1_cpu_div
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/vector_kernels.h b/viennacl/linalg/kernels/vector_kernels.h
deleted file mode 100644
index 31510d0..0000000
--- a/viennacl/linalg/kernels/vector_kernels.h
+++ /dev/null
@@ -1,547 +0,0 @@
-#ifndef _VIENNACL_VECTOR_KERNELS_HPP_
-#define _VIENNACL_VECTOR_KERNELS_HPP_
-#include "viennacl/tools/tools.hpp"
-#include "viennacl/ocl/kernel.hpp"
-#include "viennacl/ocl/platform.hpp"
-#include "viennacl/ocl/utils.hpp"
-#include "viennacl/linalg/kernels/vector_source.h"
-
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
- template<class TYPE, unsigned int alignment>
- struct vector;
-
-
- /////////////// single precision kernels ////////////////
- template <>
- struct vector<float, 16>
- {
- static std::string program_name()
- {
- return "f_vector_16";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(vector_align16_inplace_sub);
- source.append(vector_align1_norm_inf);
- source.append(vector_align1_index_norm_inf);
- source.append(vector_align16_mult);
- source.append(vector_align1_swap);
- source.append(vector_align4_inplace_div_add);
- source.append(vector_align1_norm_2);
- source.append(vector_align16_sub);
- source.append(vector_align4_cpu_mul_add);
- source.append(vector_align1_vmax);
- source.append(vector_align1_inner_prod);
- source.append(vector_align16_add);
- source.append(vector_align1_plane_rotation);
- source.append(vector_align4_inplace_mul_sub);
- source.append(vector_align4_inplace_mul_add);
- source.append(vector_align4_mul_add);
- source.append(vector_align16_cpu_mult);
- source.append(vector_align16_inplace_divide);
- source.append(vector_align1_sqrt_sum);
- source.append(vector_align4_cpu_inplace_mul_add);
- source.append(vector_align16_inplace_add);
- source.append(vector_align16_divide);
- source.append(vector_align1_norm_1);
- source.append(vector_align1_clear);
- source.append(vector_align1_cpu_inplace_mult);
- source.append(vector_align16_inplace_mult);
- source.append(vector_align1_sum);
- source.append(vector_align4_inplace_div_sub);
- source.append(vector_align1_diag_precond);
- source.append(vector_align1_mul_sub);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("norm_inf");
- prog_.add_kernel("index_norm_inf");
- prog_.add_kernel("mult");
- prog_.add_kernel("swap");
- prog_.add_kernel("inplace_div_add");
- prog_.add_kernel("norm_2");
- prog_.add_kernel("sub");
- prog_.add_kernel("cpu_mul_add");
- prog_.add_kernel("vmax");
- prog_.add_kernel("inner_prod");
- prog_.add_kernel("add");
- prog_.add_kernel("plane_rotation");
- prog_.add_kernel("inplace_mul_sub");
- prog_.add_kernel("inplace_mul_add");
- prog_.add_kernel("mul_add");
- prog_.add_kernel("cpu_mult");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("sqrt_sum");
- prog_.add_kernel("cpu_inplace_mul_add");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("norm_1");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("sum");
- prog_.add_kernel("inplace_div_sub");
- prog_.add_kernel("diag_precond");
- prog_.add_kernel("mul_sub");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct vector<float, 4>
- {
- static std::string program_name()
- {
- return "f_vector_4";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(vector_align1_inplace_sub);
- source.append(vector_align1_norm_inf);
- source.append(vector_align1_index_norm_inf);
- source.append(vector_align1_mult);
- source.append(vector_align1_swap);
- source.append(vector_align4_inplace_div_add);
- source.append(vector_align1_norm_2);
- source.append(vector_align1_sub);
- source.append(vector_align4_cpu_mul_add);
- source.append(vector_align1_vmax);
- source.append(vector_align1_inner_prod);
- source.append(vector_align1_add);
- source.append(vector_align1_plane_rotation);
- source.append(vector_align4_inplace_mul_sub);
- source.append(vector_align4_inplace_mul_add);
- source.append(vector_align4_mul_add);
- source.append(vector_align1_cpu_mult);
- source.append(vector_align1_inplace_divide);
- source.append(vector_align1_sqrt_sum);
- source.append(vector_align4_cpu_inplace_mul_add);
- source.append(vector_align1_inplace_add);
- source.append(vector_align1_divide);
- source.append(vector_align1_norm_1);
- source.append(vector_align1_clear);
- source.append(vector_align1_cpu_inplace_mult);
- source.append(vector_align1_inplace_mult);
- source.append(vector_align1_sum);
- source.append(vector_align4_inplace_div_sub);
- source.append(vector_align1_diag_precond);
- source.append(vector_align1_mul_sub);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("norm_inf");
- prog_.add_kernel("index_norm_inf");
- prog_.add_kernel("mult");
- prog_.add_kernel("swap");
- prog_.add_kernel("inplace_div_add");
- prog_.add_kernel("norm_2");
- prog_.add_kernel("sub");
- prog_.add_kernel("cpu_mul_add");
- prog_.add_kernel("vmax");
- prog_.add_kernel("inner_prod");
- prog_.add_kernel("add");
- prog_.add_kernel("plane_rotation");
- prog_.add_kernel("inplace_mul_sub");
- prog_.add_kernel("inplace_mul_add");
- prog_.add_kernel("mul_add");
- prog_.add_kernel("cpu_mult");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("sqrt_sum");
- prog_.add_kernel("cpu_inplace_mul_add");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("norm_1");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("sum");
- prog_.add_kernel("inplace_div_sub");
- prog_.add_kernel("diag_precond");
- prog_.add_kernel("mul_sub");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct vector<float, 1>
- {
- static std::string program_name()
- {
- return "f_vector_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<float>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- source.append(vector_align1_inplace_sub);
- source.append(vector_align1_norm_inf);
- source.append(vector_align1_index_norm_inf);
- source.append(vector_align1_mult);
- source.append(vector_align1_swap);
- source.append(vector_align1_inplace_div_add);
- source.append(vector_align1_norm_2);
- source.append(vector_align1_sub);
- source.append(vector_align1_cpu_mul_add);
- source.append(vector_align1_vmax);
- source.append(vector_align1_inner_prod);
- source.append(vector_align1_add);
- source.append(vector_align1_plane_rotation);
- source.append(vector_align1_inplace_mul_sub);
- source.append(vector_align1_inplace_mul_add);
- source.append(vector_align1_mul_add);
- source.append(vector_align1_cpu_mult);
- source.append(vector_align1_inplace_divide);
- source.append(vector_align1_sqrt_sum);
- source.append(vector_align1_cpu_inplace_mul_add);
- source.append(vector_align1_inplace_add);
- source.append(vector_align1_divide);
- source.append(vector_align1_norm_1);
- source.append(vector_align1_clear);
- source.append(vector_align1_cpu_inplace_mult);
- source.append(vector_align1_inplace_mult);
- source.append(vector_align1_sum);
- source.append(vector_align1_inplace_div_sub);
- source.append(vector_align1_diag_precond);
- source.append(vector_align1_mul_sub);
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("norm_inf");
- prog_.add_kernel("index_norm_inf");
- prog_.add_kernel("mult");
- prog_.add_kernel("swap");
- prog_.add_kernel("inplace_div_add");
- prog_.add_kernel("norm_2");
- prog_.add_kernel("sub");
- prog_.add_kernel("cpu_mul_add");
- prog_.add_kernel("vmax");
- prog_.add_kernel("inner_prod");
- prog_.add_kernel("add");
- prog_.add_kernel("plane_rotation");
- prog_.add_kernel("inplace_mul_sub");
- prog_.add_kernel("inplace_mul_add");
- prog_.add_kernel("mul_add");
- prog_.add_kernel("cpu_mult");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("sqrt_sum");
- prog_.add_kernel("cpu_inplace_mul_add");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("norm_1");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("sum");
- prog_.add_kernel("inplace_div_sub");
- prog_.add_kernel("diag_precond");
- prog_.add_kernel("mul_sub");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
-
- /////////////// double precision kernels ////////////////
- template <>
- struct vector<double, 16>
- {
- static std::string program_name()
- {
- return "d_vector_16";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_inf, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_index_norm_inf, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_swap, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_vmax, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inner_prod, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_plane_rotation, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_cpu_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sqrt_sum, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_inplace_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_1, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_clear, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align16_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sum, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_diag_precond, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_mul_sub, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("norm_inf");
- prog_.add_kernel("index_norm_inf");
- prog_.add_kernel("mult");
- prog_.add_kernel("swap");
- prog_.add_kernel("inplace_div_add");
- prog_.add_kernel("norm_2");
- prog_.add_kernel("sub");
- prog_.add_kernel("cpu_mul_add");
- prog_.add_kernel("vmax");
- prog_.add_kernel("inner_prod");
- prog_.add_kernel("add");
- prog_.add_kernel("plane_rotation");
- prog_.add_kernel("inplace_mul_sub");
- prog_.add_kernel("inplace_mul_add");
- prog_.add_kernel("mul_add");
- prog_.add_kernel("cpu_mult");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("sqrt_sum");
- prog_.add_kernel("cpu_inplace_mul_add");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("norm_1");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("sum");
- prog_.add_kernel("inplace_div_sub");
- prog_.add_kernel("diag_precond");
- prog_.add_kernel("mul_sub");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct vector<double, 4>
- {
- static std::string program_name()
- {
- return "d_vector_4";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_inf, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_index_norm_inf, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_swap, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_vmax, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inner_prod, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_plane_rotation, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sqrt_sum, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_cpu_inplace_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_1, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_clear, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sum, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align4_inplace_div_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_diag_precond, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_mul_sub, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("norm_inf");
- prog_.add_kernel("index_norm_inf");
- prog_.add_kernel("mult");
- prog_.add_kernel("swap");
- prog_.add_kernel("inplace_div_add");
- prog_.add_kernel("norm_2");
- prog_.add_kernel("sub");
- prog_.add_kernel("cpu_mul_add");
- prog_.add_kernel("vmax");
- prog_.add_kernel("inner_prod");
- prog_.add_kernel("add");
- prog_.add_kernel("plane_rotation");
- prog_.add_kernel("inplace_mul_sub");
- prog_.add_kernel("inplace_mul_add");
- prog_.add_kernel("mul_add");
- prog_.add_kernel("cpu_mult");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("sqrt_sum");
- prog_.add_kernel("cpu_inplace_mul_add");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("norm_1");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("sum");
- prog_.add_kernel("inplace_div_sub");
- prog_.add_kernel("diag_precond");
- prog_.add_kernel("mul_sub");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
- template <>
- struct vector<double, 1>
- {
- static std::string program_name()
- {
- return "d_vector_1";
- }
- static void init()
- {
- viennacl::ocl::DOUBLE_PRECISION_CHECKER<double>::apply();
- static std::map<cl_context, bool> init_done;
- viennacl::ocl::context & context_ = viennacl::ocl::current_context();
- if (!init_done[context_.handle()])
- {
- std::string source;
- std::string fp64_ext = viennacl::ocl::current_device().double_support_extension();
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_inf, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_index_norm_inf, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_swap, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_div_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_2, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_vmax, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inner_prod, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_plane_rotation, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mul_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sqrt_sum, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mul_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_add, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_divide, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_norm_1, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_clear, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_cpu_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_mult, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_sum, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_inplace_div_sub, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_diag_precond, fp64_ext));
- source.append(viennacl::tools::make_double_kernel(vector_align1_mul_sub, fp64_ext));
- std::string prog_name = program_name();
- #ifdef VIENNACL_BUILD_INFO
- std::cout << "Creating program " << prog_name << std::endl;
- #endif
- context_.add_program(source, prog_name);
- viennacl::ocl::program & prog_ = context_.get_program(prog_name);
- prog_.add_kernel("inplace_sub");
- prog_.add_kernel("norm_inf");
- prog_.add_kernel("index_norm_inf");
- prog_.add_kernel("mult");
- prog_.add_kernel("swap");
- prog_.add_kernel("inplace_div_add");
- prog_.add_kernel("norm_2");
- prog_.add_kernel("sub");
- prog_.add_kernel("cpu_mul_add");
- prog_.add_kernel("vmax");
- prog_.add_kernel("inner_prod");
- prog_.add_kernel("add");
- prog_.add_kernel("plane_rotation");
- prog_.add_kernel("inplace_mul_sub");
- prog_.add_kernel("inplace_mul_add");
- prog_.add_kernel("mul_add");
- prog_.add_kernel("cpu_mult");
- prog_.add_kernel("inplace_divide");
- prog_.add_kernel("sqrt_sum");
- prog_.add_kernel("cpu_inplace_mul_add");
- prog_.add_kernel("inplace_add");
- prog_.add_kernel("divide");
- prog_.add_kernel("norm_1");
- prog_.add_kernel("clear");
- prog_.add_kernel("cpu_inplace_mult");
- prog_.add_kernel("inplace_mult");
- prog_.add_kernel("sum");
- prog_.add_kernel("inplace_div_sub");
- prog_.add_kernel("diag_precond");
- prog_.add_kernel("mul_sub");
- init_done[context_.handle()] = true;
- } //if
- } //init
- }; // struct
-
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/kernels/vector_source.h b/viennacl/linalg/kernels/vector_source.h
deleted file mode 100644
index 84891fb..0000000
--- a/viennacl/linalg/kernels/vector_source.h
+++ /dev/null
@@ -1,833 +0,0 @@
-#ifndef _VIENNACL_VECTOR_SOURCE_HPP_
-#define _VIENNACL_VECTOR_SOURCE_HPP_
-//Automatically generated file from aux-directory, do not edit manually!
-namespace viennacl
-{
- namespace linalg
- {
- namespace kernels
- {
-const char * const vector_align16_inplace_sub =
-"__kernel void inplace_sub(\n"
-" __global float16 * vec1,\n"
-" __global const float16 * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i];\n"
-"}\n"
-; //vector_align16_inplace_sub
-
-const char * const vector_align16_mult =
-"__kernel void mult(\n"
-" __global const float16 * vec,\n"
-" __global const float * fac, \n"
-" __global float16 * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align16_mult
-
-const char * const vector_align16_sub =
-"__kernel void sub(\n"
-" __global const float16 * vec1,\n"
-" __global const float16 * vec2, \n"
-" __global float16 * result,\n"
-" unsigned int size)\n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //vector_align16_sub
-
-const char * const vector_align16_cpu_inplace_mul =
-"\n"
-"__kernel void cpu_inplace_mult(\n"
-" __global float16 * vec,\n"
-" float factor, \n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-"\n"
-; //vector_align16_cpu_inplace_mul
-
-const char * const vector_align16_add =
-"__kernel void add(\n"
-" __global const float16 * vec1,\n"
-" __global const float16 * vec2, \n"
-" __global float16 * result,\n"
-" unsigned int size)\n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //vector_align16_add
-
-const char * const vector_align16_cpu_mult =
-"__kernel void cpu_mult(\n"
-" __global const float16 * vec,\n"
-" float factor, \n"
-" __global float16 * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align16_cpu_mult
-
-const char * const vector_align16_inplace_divide =
-"__kernel void inplace_divide(\n"
-" __global float16 * vec,\n"
-" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" vec[i] /= factor;\n"
-"}\n"
-; //vector_align16_inplace_divide
-
-const char * const vector_align16_inplace_add =
-"__kernel void inplace_add(\n"
-" __global float16 * vec1,\n"
-" __global const float16 * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" vec1[i] += vec2[i];\n"
-"}\n"
-; //vector_align16_inplace_add
-
-const char * const vector_align16_divide =
-"//Note: 'div' cannot be used because of complaints by the jit-compiler\n"
-"__kernel void divide(\n"
-" __global const float16 * vec,\n"
-" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"
-" __global float16 * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" result[i] = vec[i] / factor;\n"
-"}\n"
-; //vector_align16_divide
-
-const char * const vector_align16_inplace_mult =
-"__kernel void inplace_mult(\n"
-" __global float16 * vec,\n"
-" __global const float * fac, \n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/16; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-; //vector_align16_inplace_mult
-
-const char * const vector_align4_inplace_div_add =
-"__kernel void inplace_div_add(\n"
-" __global float4 * vec1,\n"
-" __global const float4 * vec2,\n"
-" __global const float * fac, //CPU variant is mapped to mult_add\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align4_inplace_div_add
-
-const char * const vector_align4_cpu_mul_add =
-"__kernel void cpu_mul_add(\n"
-" __global const float4 * vec1,\n"
-" float factor,\n"
-" __global const float4 * vec2,\n"
-" __global float4 * result,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-" result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align4_cpu_mul_add
-
-const char * const vector_align4_inplace_mul_sub =
-"__kernel void inplace_mul_sub(\n"
-" __global float4 * vec1,\n"
-" __global const float4 * vec2,\n"
-" __global const float * fac, //CPU variant is mapped to mult_add\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i] * factor;\n"
-"}\n"
-; //vector_align4_inplace_mul_sub
-
-const char * const vector_align4_inplace_mul_add =
-"__kernel void inplace_mul_add(\n"
-" __global float4 * vec1,\n"
-" __global const float4 * vec2,\n"
-" __global const float * fac,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" unsigned int size_div_4 = size >> 2;\n"
-" for (unsigned int i = get_global_id(0); i < size_div_4; i += get_global_size(0))\n"
-" vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align4_inplace_mul_add
-
-const char * const vector_align4_mul_add =
-"__kernel void mul_add(\n"
-" __global const float4 * vec1,\n"
-" __global const float * fac,\n"
-" __global const float4 * vec2,\n"
-" __global float4 * result,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-" result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align4_mul_add
-
-const char * const vector_align4_cpu_inplace_mul_add =
-"__kernel void cpu_inplace_mul_add(\n"
-" __global float4 * vec1,\n"
-" __global const float4 * vec2,\n"
-" float factor,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-" vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align4_cpu_inplace_mul_add
-
-const char * const vector_align4_inplace_div_sub =
-"__kernel void inplace_div_sub(\n"
-" __global float4 * vec1,\n"
-" __global const float4 * vec2,\n"
-" __global const float * fac, //CPU variant is mapped to mult_add\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size/4; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align4_inplace_div_sub
-
-const char * const vector_align1_inplace_sub =
-"__kernel void inplace_sub(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i];\n"
-"}\n"
-; //vector_align1_inplace_sub
-
-const char * const vector_align1_norm_inf =
-"\n"
-"////// norm_inf\n"
-"float impl_norm_inf(\n"
-" __global const float * vec,\n"
-" unsigned int start_index,\n"
-" unsigned int end_index,\n"
-" __local float * tmp_buffer)\n"
-"{\n"
-" float tmp = 0;\n"
-" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-" tmp = fmax(fabs(vec[i]), tmp);\n"
-" tmp_buffer[get_local_id(0)] = tmp;\n"
-" \n"
-" //step 2: parallel reduction:\n"
-" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (get_global_id(0) < stride)\n"
-" tmp_buffer[get_global_id(0)] = fmax(tmp_buffer[get_global_id(0)], tmp_buffer[get_global_id(0)+stride]);\n"
-" }\n"
-" \n"
-" return tmp_buffer[0];\n"
-"}\n"
-"\n"
-"__kernel void norm_inf(\n"
-" __global const float * vec,\n"
-" unsigned int size,\n"
-" __local float * tmp_buffer,\n"
-" global float * group_buffer)\n"
-"{\n"
-" float tmp = impl_norm_inf(vec,\n"
-" ( get_group_id(0) * size) / get_num_groups(0),\n"
-" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-" tmp_buffer);\n"
-" \n"
-" if (get_local_id(0) == 0)\n"
-" group_buffer[get_group_id(0)] = tmp; \n"
-"}\n"
-; //vector_align1_norm_inf
-
-const char * const vector_align1_index_norm_inf =
-"//index_norm_inf:\n"
-"unsigned int float_vector1_index_norm_inf_impl(\n"
-" __global const float * vec,\n"
-" unsigned int size,\n"
-" __local float * float_buffer,\n"
-" __local unsigned int * index_buffer)\n"
-"{\n"
-" //step 1: fill buffer:\n"
-" float cur_max = 0.0f;\n"
-" float tmp;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" {\n"
-" tmp = fabs(vec[i]);\n"
-" if (cur_max < tmp)\n"
-" {\n"
-" float_buffer[get_global_id(0)] = tmp;\n"
-" index_buffer[get_global_id(0)] = i;\n"
-" cur_max = tmp;\n"
-" }\n"
-" }\n"
-" \n"
-" //step 2: parallel reduction:\n"
-" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (get_global_id(0) < stride)\n"
-" {\n"
-" //find the first occurring index\n"
-" if (float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride])\n"
-" {\n"
-" index_buffer[get_global_id(0)] = index_buffer[get_global_id(0)+stride];\n"
-" float_buffer[get_global_id(0)] = float_buffer[get_global_id(0)+stride];\n"
-" }\n"
-" \n"
-" //index_buffer[get_global_id(0)] = float_buffer[get_global_id(0)] < float_buffer[get_global_id(0)+stride] ? index_buffer[get_global_id(0)+stride] : index_buffer[get_global_id(0)];\n"
-" //float_buffer[get_global_id(0)] = max(float_buffer[get_global_id(0)], float_buffer[get_global_id(0)+stride]);\n"
-" }\n"
-" }\n"
-" \n"
-" return index_buffer[0];\n"
-"}\n"
-"\n"
-"__kernel void index_norm_inf(\n"
-" __global float * vec,\n"
-" unsigned int size,\n"
-" __local float * float_buffer,\n"
-" __local unsigned int * index_buffer,\n"
-" global unsigned int * result) \n"
-"{ \n"
-" unsigned int tmp = float_vector1_index_norm_inf_impl(vec, size, float_buffer, index_buffer);\n"
-" if (get_global_id(0) == 0) *result = tmp;\n"
-"}\n"
-"\n"
-"\n"
-; //vector_align1_index_norm_inf
-
-const char * const vector_align1_mult =
-"__kernel void mult(\n"
-" __global const float * vec,\n"
-" __global const float * fac, \n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align1_mult
-
-const char * const vector_align1_swap =
-"////// swap:\n"
-"__kernel void swap(\n"
-" __global float * vec1,\n"
-" __global float * vec2,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float tmp;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" {\n"
-" tmp = vec2[i];\n"
-" vec2[i] = vec1[i];\n"
-" vec1[i] = tmp;\n"
-" }\n"
-"}\n"
-" \n"
-; //vector_align1_swap
-
-const char * const vector_align1_inplace_div_add =
-"///// divide add:\n"
-"__kernel void inplace_div_add(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" __global const float * fac, //CPU variant is mapped to mult_add\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align1_inplace_div_add
-
-const char * const vector_align1_norm_2 =
-"//helper:\n"
-"void helper_norm2_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (get_global_id(0) < stride)\n"
-" tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"
-" }\n"
-"}\n"
-"\n"
-"////// norm_2\n"
-"float impl_norm_2(\n"
-" __global const float * vec,\n"
-" unsigned int start_index,\n"
-" unsigned int end_index,\n"
-" __local float * tmp_buffer)\n"
-"{\n"
-" float tmp = 0;\n"
-" float vec_entry = 0;\n"
-" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-" {\n"
-" vec_entry = vec[i];\n"
-" tmp += vec_entry * vec_entry;\n"
-" }\n"
-" tmp_buffer[get_local_id(0)] = tmp;\n"
-" \n"
-" helper_norm2_parallel_reduction(tmp_buffer);\n"
-" \n"
-" return tmp_buffer[0];\n"
-"};\n"
-"\n"
-"__kernel void norm_2(\n"
-" __global const float * vec,\n"
-" unsigned int size,\n"
-" __local float * tmp_buffer,\n"
-" global float * group_buffer)\n"
-"{\n"
-" float tmp = impl_norm_2(vec,\n"
-" ( get_group_id(0) * size) / get_num_groups(0),\n"
-" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-" tmp_buffer);\n"
-" \n"
-" if (get_local_id(0) == 0)\n"
-" group_buffer[get_group_id(0)] = tmp; \n"
-"}\n"
-"\n"
-; //vector_align1_norm_2
-
-const char * const vector_align1_sub =
-"__kernel void sub(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2, \n"
-" __global float * result,\n"
-" unsigned int size)\n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] - vec2[i];\n"
-"}\n"
-; //vector_align1_sub
-
-const char * const vector_align1_cpu_mul_add =
-"__kernel void cpu_mul_add(\n"
-" __global const float * vec1,\n"
-" float factor,\n"
-" __global const float * vec2,\n"
-" __global float * result,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align1_cpu_mul_add
-
-const char * const vector_align1_vmax =
-"__kernel void vmax(\n"
-" __global float * vec1,\n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" //parallel reduction on global memory:\n"
-" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" if (get_global_id(0) < stride)\n"
-" vec1[get_global_id(0)] = fmax(vec1[get_global_id(0)+stride], vec1[get_global_id(0)]);\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" }\n"
-" \n"
-" if (get_global_id(0) == 0)\n"
-" *result = vec1[0]; \n"
-"}\n"
-; //vector_align1_vmax
-
-const char * const vector_align1_inner_prod =
-"//helper:\n"
-"void helper_inner_prod_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-" for (unsigned int stride = get_local_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (get_local_id(0) < stride)\n"
-" tmp_buffer[get_local_id(0)] += tmp_buffer[get_local_id(0)+stride];\n"
-" }\n"
-"}\n"
-"//////// inner products:\n"
-"float impl_inner_prod(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int start_index,\n"
-" unsigned int end_index,\n"
-" __local float * tmp_buffer)\n"
-"{\n"
-" float tmp = 0;\n"
-" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-" tmp += vec1[i] * vec2[i];\n"
-" tmp_buffer[get_local_id(0)] = tmp;\n"
-" \n"
-" helper_inner_prod_parallel_reduction(tmp_buffer);\n"
-" \n"
-" return tmp_buffer[0];\n"
-"}\n"
-"__kernel void inner_prod(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size,\n"
-" __local float * tmp_buffer,\n"
-" global float * group_buffer)\n"
-"{\n"
-" float tmp = impl_inner_prod(vec1,\n"
-" vec2,\n"
-" ( get_group_id(0) * size) / get_num_groups(0),\n"
-" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-" tmp_buffer);\n"
-" \n"
-" if (get_local_id(0) == 0)\n"
-" group_buffer[get_group_id(0)] = tmp;\n"
-" \n"
-"}\n"
-; //vector_align1_inner_prod
-
-const char * const vector_align1_add =
-"__kernel void add(\n"
-" __global const float * vec1,\n"
-" __global const float * vec2, \n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] + vec2[i];\n"
-"}\n"
-; //vector_align1_add
-
-const char * const vector_align1_plane_rotation =
-"////// plane rotation: (x,y) <- (\alpha x + \beta y, -\beta x + \alpha y)\n"
-"__kernel void plane_rotation(\n"
-" __global float * vec1,\n"
-" __global float * vec2, \n"
-" float alpha,\n"
-" float beta,\n"
-" unsigned int size) \n"
-"{ \n"
-" float tmp1 = 0;\n"
-" float tmp2 = 0;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" {\n"
-" tmp1 = vec1[i];\n"
-" tmp2 = vec2[i];\n"
-" \n"
-" vec1[i] = alpha * tmp1 + beta * tmp2;\n"
-" vec2[i] = alpha * tmp2 - beta * tmp1;\n"
-" }\n"
-"}\n"
-; //vector_align1_plane_rotation
-
-const char * const vector_align1_inplace_mul_sub =
-"__kernel void inplace_mul_sub(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" __global const float * fac, //CPU variant is mapped to mult_add\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i] * factor;\n"
-"}\n"
-; //vector_align1_inplace_mul_sub
-
-const char * const vector_align1_inplace_mul_add =
-"__kernel void inplace_mul_add(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" __global const float * fac,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align1_inplace_mul_add
-
-const char * const vector_align1_mul_add =
-"__kernel void mul_add(\n"
-" __global const float * vec1,\n"
-" __global const float * fac,\n"
-" __global const float * vec2,\n"
-" __global float * result,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] * factor + vec2[i];\n"
-"}\n"
-; //vector_align1_mul_add
-
-const char * const vector_align1_cpu_mult =
-"__kernel void cpu_mult(\n"
-" __global const float * vec,\n"
-" float factor, \n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec[i] * factor;\n"
-"}\n"
-; //vector_align1_cpu_mult
-
-const char * const vector_align1_inplace_divide =
-"__kernel void inplace_divide(\n"
-" __global float * vec,\n"
-" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] /= factor;\n"
-"}\n"
-; //vector_align1_inplace_divide
-
-const char * const vector_align1_sqrt_sum =
-"__kernel void sqrt_sum(\n"
-" __global float * vec1,\n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" //parallel reduction on global memory: \n"
-" \n"
-" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" if (get_global_id(0) < stride)\n"
-" vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" }\n"
-" \n"
-" if (get_global_id(0) == 0)\n"
-" *result = sqrt(vec1[0]);\n"
-" \n"
-"}\n"
-; //vector_align1_sqrt_sum
-
-const char * const vector_align1_cpu_inplace_mul_add =
-"__kernel void cpu_inplace_mul_add(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" float factor,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] += vec2[i] * factor;\n"
-"}\n"
-; //vector_align1_cpu_inplace_mul_add
-
-const char * const vector_align1_inplace_add =
-"__kernel void inplace_add(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] += vec2[i];\n"
-"}\n"
-; //vector_align1_inplace_add
-
-const char * const vector_align1_divide =
-"// Note: name 'div' is not allowed by the jit-compiler\n"
-"__kernel void divide(\n"
-" __global const float * vec,\n"
-" __global const float * fac, //note: CPU variant is mapped to prod_scalar\n"
-" __global float * result,\n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec[i] / factor;\n"
-"}\n"
-; //vector_align1_divide
-
-const char * const vector_align1_norm_1 =
-"//helper:\n"
-"void helper_norm1_parallel_reduction( __local float * tmp_buffer )\n"
-"{\n"
-" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" barrier(CLK_LOCAL_MEM_FENCE);\n"
-" if (get_global_id(0) < stride)\n"
-" tmp_buffer[get_global_id(0)] += tmp_buffer[get_global_id(0)+stride];\n"
-" }\n"
-"}\n"
-"\n"
-"////// norm_1\n"
-"float impl_norm_1(\n"
-" __global const float * vec,\n"
-" unsigned int start_index,\n"
-" unsigned int end_index,\n"
-" __local float * tmp_buffer)\n"
-"{\n"
-" float tmp = 0;\n"
-" for (unsigned int i = start_index + get_local_id(0); i < end_index; i += get_local_size(0))\n"
-" tmp += fabs(vec[i]);\n"
-" \n"
-" tmp_buffer[get_local_id(0)] = tmp;\n"
-" \n"
-" helper_norm1_parallel_reduction(tmp_buffer);\n"
-" \n"
-" return tmp_buffer[0];\n"
-"};\n"
-"\n"
-"__kernel void norm_1(\n"
-" __global const float * vec,\n"
-" unsigned int size,\n"
-" __local float * tmp_buffer,\n"
-" global float * group_buffer)\n"
-"{\n"
-" float tmp = impl_norm_1(vec,\n"
-" ( get_group_id(0) * size) / get_num_groups(0),\n"
-" ((get_group_id(0) + 1) * size) / get_num_groups(0),\n"
-" tmp_buffer);\n"
-" \n"
-" if (get_local_id(0) == 0)\n"
-" group_buffer[get_group_id(0)] = tmp; \n"
-"}\n"
-"\n"
-; //vector_align1_norm_1
-
-const char * const vector_align1_clear =
-"__kernel void clear(\n"
-" __global float * vec,\n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] = 0;\n"
-"}\n"
-; //vector_align1_clear
-
-const char * const vector_align1_cpu_inplace_mult =
-"__kernel void cpu_inplace_mult(\n"
-" __global float * vec,\n"
-" float factor, \n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-; //vector_align1_cpu_inplace_mult
-
-const char * const vector_align1_inplace_mult =
-"__kernel void inplace_mult(\n"
-" __global float * vec,\n"
-" __global const float * fac, \n"
-" unsigned int size) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec[i] *= factor;\n"
-"}\n"
-; //vector_align1_inplace_mult
-
-const char * const vector_align1_sum =
-"__kernel void sum(\n"
-" __global float * vec1,\n"
-" __global float * result) \n"
-"{ \n"
-" //parallel reduction on global memory: \n"
-" \n"
-" for (unsigned int stride = get_global_size(0)/2; stride > 0; stride /= 2)\n"
-" {\n"
-" if (get_global_id(0) < stride)\n"
-" vec1[get_global_id(0)] += vec1[get_global_id(0)+stride];\n"
-" barrier(CLK_GLOBAL_MEM_FENCE);\n"
-" }\n"
-" \n"
-" if (get_global_id(0) == 0)\n"
-" *result = vec1[0]; \n"
-"}\n"
-; //vector_align1_sum
-
-const char * const vector_align1_inplace_div_sub =
-"///// divide substract:\n"
-"__kernel void inplace_div_sub(\n"
-" __global float * vec1,\n"
-" __global const float * vec2,\n"
-" __global const float * fac, //CPU variant is mapped to mult_add\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" vec1[i] -= vec2[i] / factor;\n"
-"}\n"
-; //vector_align1_inplace_div_sub
-
-const char * const vector_align1_diag_precond =
-"__kernel void diag_precond(\n"
-" __global const float * diag_A_inv, \n"
-" __global float * x, \n"
-" unsigned int size) \n"
-"{ \n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" x[i] *= diag_A_inv[i];\n"
-"}\n"
-; //vector_align1_diag_precond
-
-const char * const vector_align1_mul_sub =
-"///// multiply subtract:\n"
-"__kernel void mul_sub(\n"
-" __global const float * vec1,\n"
-" __global const float * fac,\n"
-" __global const float * vec2,\n"
-" __global float * result,\n"
-" unsigned int size\n"
-" ) \n"
-"{ \n"
-" float factor = *fac;\n"
-" for (unsigned int i = get_global_id(0); i < size; i += get_global_size(0))\n"
-" result[i] = vec1[i] * factor - vec2[i];\n"
-"}\n"
-; //vector_align1_mul_sub
-
- } //namespace kernels
- } //namespace linalg
-} //namespace viennacl
-#endif
diff --git a/viennacl/linalg/matrix_operations.hpp b/viennacl/linalg/matrix_operations.hpp
index b7457dd..a15e7ab 100644
--- a/viennacl/linalg/matrix_operations.hpp
+++ b/viennacl/linalg/matrix_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_MATRIX_OPERATIONS_HPP_
-#define _VIENNACL_MATRIX_OPERATIONS_HPP_
+#ifndef VIENNACL_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file matrix_operations.hpp
@brief Implementations of dense matrix related operations. also matrix-vector products.
@@ -26,6 +28,10 @@
#include "viennacl/scalar.hpp"
#include "viennacl/vector.hpp"
#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/predicate.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/traits/start.hpp"
+#include "viennacl/traits/handle.hpp"
#include "viennacl/tools/matrix_kernel_class_deducer.hpp"
#include "viennacl/tools/matrix_prod_kernel_class_deducer.hpp"
#include "viennacl/linalg/kernels/vector_kernels.h"
@@ -70,7 +76,7 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "add");
assert( (mat1.internal_size() == mat2.internal_size())
&& "Operands must have same dimension and memory layout in this version of ViennaCL!");
- unsigned int size = std::min(mat1.internal_size(), mat2.internal_size());
+ cl_uint size = std::min(mat1.internal_size(), mat2.internal_size());
viennacl::ocl::enqueue(k(mat1, mat2, result, size));
}
@@ -79,31 +85,101 @@ namespace viennacl
*
* This is the implementation of the convenience expression result += mat1;
*
+ * @param mat2 The addend (either a matrix or a matrix_range)
+ * @param result The resulting matrix (either a matrix or a matrix_range)
+ */
+ template <typename M1, typename M2>
+ typename viennacl::enable_if< viennacl::is_matrix<M1>::value
+ && viennacl::is_matrix<M2>::value
+ >::type
+ inplace_add(M1 & result, M2 const & mat2)
+ {
+ assert(viennacl::traits::size1(result) == viennacl::traits::size1(mat2));
+ assert(viennacl::traits::size2(result) == viennacl::traits::size2(mat2));
+
+ typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< M1 >::ResultType KernelClass;
+
+ size_t block_size = 15;
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_add");
+ k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(viennacl::traits::size1(result), block_size));
+ k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(viennacl::traits::size2(result), block_size));
+ k.local_work_size(0, block_size);
+ k.local_work_size(1, block_size);
+
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(result),
+ cl_uint(viennacl::traits::start1(result)), cl_uint(viennacl::traits::start2(result)),
+ cl_uint(viennacl::traits::size1(result)), cl_uint(viennacl::traits::size2(result)),
+ cl_uint(viennacl::traits::internal_size1(result)), cl_uint(viennacl::traits::internal_size2(result)),
+ viennacl::traits::handle(mat2),
+ cl_uint(viennacl::traits::start1(mat2)), cl_uint(viennacl::traits::start2(mat2)),
+ cl_uint(viennacl::traits::size1(mat2)), cl_uint(viennacl::traits::size2(mat2)),
+ cl_uint(viennacl::traits::internal_size1(mat2)), cl_uint(viennacl::traits::internal_size2(mat2))
+ )
+ );
+ }
+
+ /** @brief Adds a dense matrix to another
+ *
+ * This is the implementation of the convenience expression result += mat1;
+ *
* @param mat1 The left hand side operand
* @param mat2 The right hand side operand
* @param result The resulting matrix
*/
- template<class TYPE, typename F, unsigned int ALIGNMENT>
- void inplace_add(viennacl::matrix<TYPE, F, ALIGNMENT> & result,
- const viennacl::matrix<TYPE, F, ALIGNMENT> & mat2)
+ /*
+ template <typename MatrixType>
+ void inplace_add(viennacl::matrix_range<MatrixType> & result,
+ const viennacl::matrix_range<MatrixType> & mat2)
{
assert(result.size1() == mat2.size1());
assert(result.size2() == mat2.size2());
- typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<TYPE, F, ALIGNMENT> >::ResultType KernelClass;
+ typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< MatrixType >::ResultType KernelClass;
+
+ size_t block_size = 15;
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_add");
- assert( (result.internal_size() == mat2.internal_size())
- && "Operands must have same dimension and memory layout in this version of ViennaCL!");
- unsigned int size = std::min(result.internal_size(), mat2.internal_size());
+ k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(result.size1(), block_size));
+ k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(result.size2(), block_size));
+ k.local_work_size(0, block_size);
+ k.local_work_size(1, block_size);
- viennacl::ocl::enqueue(k(result, mat2, size));
- }
+ viennacl::ocl::enqueue(k(result.get(), cl_uint(result.start1()), cl_uint(result.start2()),
+ cl_uint(result.size1()), cl_uint(result.size2()),
+ cl_uint(result.get().internal_size1()), cl_uint(result.get().internal_size2()),
+ mat2.get(), cl_uint(mat2.start1()), cl_uint(mat2.start2()),
+ cl_uint(mat2.size1()), cl_uint(mat2.size2()),
+ cl_uint(mat2.get().internal_size1()), cl_uint(mat2.get().internal_size2())
+ )
+ );
+ } */
+ /** @brief Adds a dense matrix to another
+ *
+ * This is the implementation of the convenience expression result += mat1;
+ *
+ * @param mat1 The left hand side operand
+ * @param mat2 The right hand side operand
+ * @param result The resulting matrix
+ */
+ /*
+ template<class TYPE, typename F, unsigned int ALIGNMENT>
+ void inplace_add(viennacl::matrix<TYPE, F, ALIGNMENT> & result,
+ const viennacl::matrix_range<viennacl::matrix<TYPE, F, ALIGNMENT> > & mat2)
+ {
+ viennacl::range r1(0, result.size1());
+ viennacl::range r2(0, result.size2());
+ viennacl::matrix_range<viennacl::matrix<TYPE, F, ALIGNMENT> > result_wrap(result, r1, r2);
+ inplace_add(result_wrap, mat2);
+ } */
- /** @brief Adds two dense matrices and writes the result to a third matrix
+
+
+
+ /** @brief Subtracts two dense matrices and writes the result to a third matrix
*
- * This is the implementation of the convenience expression result = mat1 + mat2;
+ * This is the implementation of the convenience expression result = mat1 - mat2;
*
* @param mat1 The left hand side operand
* @param mat2 The right hand side operand
@@ -124,17 +200,16 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "sub");
assert( (mat1.internal_size() == mat2.internal_size())
&& "Operands must have same dimension and memory layout in this version of ViennaCL!");
- unsigned int size = std::min(mat1.internal_size(), mat2.internal_size());
+ cl_uint size = std::min(mat1.internal_size(), mat2.internal_size());
viennacl::ocl::enqueue(k(mat1, mat2, result, size));
}
- /** @brief Adds a dense matrix to another
+ /** @brief Subtracts a dense matrix from another
*
- * This is the implementation of the convenience expression result += mat1;
+ * This is the implementation of the convenience expression mat1 -= mat2;
*
- * @param mat1 The left hand side operand
- * @param mat2 The right hand side operand
+ * @param mat2 The matrix to be subtracted
* @param result The resulting matrix
*/
template<class TYPE, typename F, unsigned int ALIGNMENT>
@@ -149,18 +224,17 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_sub");
assert( (result.internal_size() == mat2.internal_size())
&& "Operands must have same dimension and memory layout in this version of ViennaCL!");
- unsigned int size = std::min(result.internal_size(), mat2.internal_size());
+ cl_uint size = std::min(result.internal_size(), mat2.internal_size());
viennacl::ocl::enqueue(k(result, mat2, size));
}
/** @brief Multiplies a dense matrix by a scalar
*
- * This is the implementation of the convenience expression result += mat1;
+ * This is the implementation of the convenience expression matrix *= val;
*
- * @param mat1 The left hand side operand
- * @param mat2 The right hand side operand
- * @param result The resulting matrix
+ * @param result The matrix to be manipulated
+ * @param val The CPU scalar by which all entries of the matrix are multiplied
*/
template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
void inplace_mult(viennacl::matrix<SCALARTYPE, F, ALIGNMENT> & result,
@@ -169,19 +243,16 @@ namespace viennacl
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "cpu_inplace_mult");
- unsigned int size = result.internal_size();
-
- viennacl::ocl::enqueue(k(result, val, size));
+ viennacl::ocl::enqueue(k(result, val, cl_uint(result.internal_size())));
}
/** @brief Multiplies a dense matrix by a scalar
*
- * This is the implementation of the convenience expression result += mat1;
+ * This is the implementation of the convenience expression matrix *= val;
*
- * @param mat1 The left hand side operand
- * @param mat2 The right hand side operand
- * @param result The resulting matrix
+ * @param result The matrix to be manipulated
+ * @param val The scalar by which all entries of the matrix are multiplied
*/
template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
void inplace_mult(viennacl::matrix<SCALARTYPE, F, ALIGNMENT> & result,
@@ -190,20 +261,17 @@ namespace viennacl
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "inplace_mult");
- unsigned int size = result.internal_size();
-
- viennacl::ocl::enqueue(k(result, val, size));
+ viennacl::ocl::enqueue(k(result, val, cl_uint(result.internal_size())));
}
/** @brief Multiplies a dense matrix by a scalar
*
- * This is the implementation of the convenience expression result += mat1;
+ * This is the implementation of the convenience expression matrix /= val;
*
- * @param mat1 The left hand side operand
- * @param mat2 The right hand side operand
- * @param result The resulting matrix
+ * @param result The matrix to be manipulated
+ * @param val The scalar by which all entries of the matrix are divided
*/
template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
void inplace_divide(viennacl::matrix<SCALARTYPE, F, ALIGNMENT> & result,
@@ -258,7 +326,8 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "vec_mul");
viennacl::ocl::enqueue(
- k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(), vec, result));
+ k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+ cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()), vec, result));
}
@@ -322,7 +391,8 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "trans_vec_mul");
- viennacl::ocl::enqueue(k(mat, mat.size1(), mat.size2(), mat.internal_size1(), mat.internal_size2(), vec, result));
+ viennacl::ocl::enqueue(k(mat, cl_uint(mat.size1()), cl_uint(mat.size2()),
+ cl_uint(mat.internal_size1()), cl_uint(mat.internal_size2()), vec, result));
}
@@ -365,14 +435,73 @@ namespace viennacl
k.local_work_size(1, block_size);
viennacl::ocl::enqueue(
- k(A, A.size1(), A.size2(), A.internal_size1(), A.internal_size2(),
- B, B.size1(), B.size2(), B.internal_size1(), B.internal_size2(),
- C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
+ k(A, cl_uint(0), cl_uint(0),
+ cl_uint(A.size1()), cl_uint(A.size2()),
+ cl_uint(A.internal_size1()), cl_uint(A.internal_size2()),
+ B, cl_uint(0), cl_uint(0),
+ cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.internal_size1()), cl_uint(B.internal_size2()),
+ C, cl_uint(0), cl_uint(0),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));
}
+ /** @brief Carries out matrix-matrix multiplication for submatrices
+ *
+ * Implementation of C = prod(A, B); for submatrices
+ *
+ */
+ template<typename T1, typename T2, typename T3>
+ void prod_impl(const viennacl::matrix_range<T1> & A,
+ const viennacl::matrix_range<T2> & B,
+ viennacl::matrix_range<T3> & C,
+ int block_size = 15) // [JW] added ability to set block size from outside ..
+ {
+ typedef typename T1::value_type::value_type value_type;
+
+ assert(A.size1() == C.size1());
+ assert(A.size2() == B.size1());
+ assert(B.size2() == C.size2());
+ // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+ assert(C.get().handle() != A.get().handle()
+ && C.get().handle() != B.get().handle()
+ && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+
+ typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< T1, T2, T3 >::ResultType KernelClass;
+ KernelClass::init();
+
+ //std::cout << "KernelClass::program_name() : " << KernelClass::program_name() << std::endl;
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_AA");
+
+ /*k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1() / 2, block_size / 2));
+ k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2() / 2, block_size / 2));
+ k.local_work_size(0, block_size / 2);
+ k.local_work_size(1, block_size / 2);*/
+
+ k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+ k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+ k.local_work_size(0, block_size);
+ k.local_work_size(1, block_size);
+
+ viennacl::ocl::enqueue(
+ k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+ cl_uint(A.size1()), cl_uint(A.size2()),
+ cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+ B.get(), cl_uint(B.start1()), cl_uint(B.start2()),
+ cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+ C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) ));
+ }
+
+
+
/** @brief Carries out matrix-matrix multiplication
*
* Implementation of C = prod(trans(A), B);
@@ -408,14 +537,74 @@ namespace viennacl
k.local_work_size(0, block_size);
k.local_work_size(1, block_size);
viennacl::ocl::enqueue(
- k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
- B, B.size1(), B.size2(), B.internal_size1(), B.internal_size2(),
- C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
- viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
- viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));
+ k(A.lhs(), cl_uint(0), cl_uint(0),
+ cl_uint(A.lhs().size1()), cl_uint(A.lhs().size2()),
+ cl_uint(A.lhs().internal_size1()), cl_uint(A.lhs().internal_size2()),
+ B, cl_uint(0), cl_uint(0),
+ cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.internal_size1()), cl_uint(B.internal_size2()),
+ C, cl_uint(0), cl_uint(0),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
+ viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
+ viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) )
+ );
}
+ /** @brief Carries out matrix-matrix multiplication for submatrices
+ *
+ * Implementation of C = prod(trans(A), B); for submatrices
+ *
+ */
+ template <typename M1, typename M2, typename M3>
+ void prod_impl(const viennacl::matrix_expression< const matrix_range<M1>,
+ const matrix_range<M1>,
+ op_trans> & A_trans,
+ const viennacl::matrix_range<M2> & B,
+ viennacl::matrix_range<M3> & C)
+ {
+ typedef typename M1::value_type::value_type value_type;
+ assert(A_trans.size2() == C.size1());
+ assert(A_trans.size1() == B.size1());
+ assert(B.size2() == C.size2());
+ // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+ assert(C.get().handle() != A_trans.lhs().get().handle()
+ && C.get().handle() != B.get().handle()
+ && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+
+ int block_size = 15;
+
+ typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< M1, M2, M3 >::ResultType KernelClass;
+ KernelClass::init();
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_TA");
+
+ k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+ k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+
+ k.local_work_size(0, block_size);
+ k.local_work_size(1, block_size);
+
+ const matrix_range<M1> & A = A_trans.lhs();
+ viennacl::ocl::enqueue(
+ k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+ cl_uint(A.size1()), cl_uint(A.size2()),
+ cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+ B.get(), cl_uint(B.start1()), cl_uint(B.start2()),
+ cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+ C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) )
+ );
+ }
+
+
+
+
/** @brief Carries out matrix-matrix multiplication
*
* Implementation of C = prod(A, trans(B));
@@ -451,15 +640,78 @@ namespace viennacl
k.local_work_size(0, block_size);
k.local_work_size(1, block_size);
viennacl::ocl::enqueue(
- k(A, A.size1(), A.size2(), A.internal_size1(), A.internal_size2(),
- B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
- C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
- viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
- viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));
+ k(A, cl_uint(0), cl_uint(0),
+ cl_uint(A.size1()), cl_uint(A.size2()),
+ cl_uint(A.internal_size1()), cl_uint(A.internal_size2()),
+ B.lhs(), cl_uint(0), cl_uint(0),
+ cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+ cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()),
+ C, cl_uint(0), cl_uint(0),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
+ viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
+ viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) )
+ );
+ }
+
+
+ /** @brief Carries out matrix-matrix multiplication for submatrices
+ *
+ * Implementation of C = prod(A, trans(B)); for submatrices
+ *
+ */
+ template <typename M1, typename M2, typename M3>
+ void prod_impl(const viennacl::matrix_range<M1> & A,
+ const viennacl::matrix_expression< const matrix_range<M2>,
+ const matrix_range<M2>,
+ op_trans> & B_trans,
+ viennacl::matrix_range<M3> & C)
+ {
+ typedef typename M1::value_type::value_type value_type;
+ assert(A.size1() == C.size1());
+ assert(A.size2() == B_trans.size2());
+ assert(B_trans.size1() == C.size2());
+ // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+ assert(C.get().handle() != A.get().handle()
+ && C.get().handle() != B_trans.lhs().get().handle()
+ && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+
+ int block_size = 15;
+
+ typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< M1, M2, M3 >::ResultType KernelClass;
+ KernelClass::init();
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_AT");
+
+ k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+ k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+
+ k.local_work_size(0, block_size);
+ k.local_work_size(1, block_size);
+ const matrix_range<M2> & B = B_trans.lhs();
+ viennacl::ocl::enqueue(
+ k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+ cl_uint(A.size1()), cl_uint(A.size2()),
+ cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+ B.get(), cl_uint(B.start1()), cl_uint(B.start2()),
+ cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+ C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) )
+ );
}
+
+
+
+
+
+
/** @brief Carries out matrix-matrix multiplication
*
* Implementation of C = prod(trans(A), trans(B));
@@ -497,14 +749,72 @@ namespace viennacl
k.local_work_size(0, block_size);
k.local_work_size(1, block_size);
viennacl::ocl::enqueue(
- k(A.lhs(), A.lhs().size1(), A.lhs().size2(), A.lhs().internal_size1(), A.lhs().internal_size2(),
- B.lhs(), B.lhs().size1(), B.lhs().size2(), B.lhs().internal_size1(), B.lhs().internal_size2(),
- C, C.size1(), C.size2(), C.internal_size1(), C.internal_size2(),
- viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
- viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) ));
+ k(A.lhs(), cl_uint(0), cl_uint(0),
+ cl_uint(A.lhs().size1()), cl_uint(A.lhs().size2()),
+ cl_uint(A.lhs().internal_size1()), cl_uint(A.lhs().internal_size2()),
+ B.lhs(), cl_uint(0), cl_uint(0),
+ cl_uint(B.lhs().size1()), cl_uint(B.lhs().size2()),
+ cl_uint(B.lhs().internal_size1()), cl_uint(B.lhs().internal_size2()),
+ C, cl_uint(0), cl_uint(0),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.internal_size1()), cl_uint(C.internal_size2()),
+ viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size),
+ viennacl::ocl::local_mem(sizeof(TYPE) * block_size * block_size) )
+ );
}
+ /** @brief Carries out matrix-matrix multiplication for submatrices
+ *
+ * Implementation of C = prod(trans(A), trans(B)); for submatrices
+ *
+ */
+ template <typename M1, typename M2, typename M3>
+ void prod_impl(const viennacl::matrix_expression< const matrix_range<M1>,
+ const matrix_range<M1>,
+ op_trans> & A_trans,
+ const viennacl::matrix_expression< const matrix_range<M2>,
+ const matrix_range<M2>,
+ op_trans> & B_trans,
+ viennacl::matrix_range<M3> & C)
+ {
+ typedef typename M1::value_type::value_type value_type;
+ assert(A_trans.size2() == C.size1());
+ assert(A_trans.size1() == B_trans.size2());
+ assert(B_trans.size1() == C.size2());
+ // Inplace matrix-vector products like B = prod(A, B) are currently illegal: Introduce a temporary like C = prod(A, B); B = C; instead
+ assert(C.get().handle() != A_trans.lhs().get().handle()
+ && C.get().handle() != B_trans.lhs().get().handle()
+ && "No direct inplace matrix-matrix product possible. Introduce a temporary!");
+
+ int block_size = 15;
+
+ typedef typename viennacl::tools::MATRIX_PROD_KERNEL_CLASS_DEDUCER< M1, M2, M3 >::ResultType KernelClass;
+ KernelClass::init();
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "prod_TT");
+
+ k.global_work_size(0, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size1(), block_size));
+ k.global_work_size(1, viennacl::tools::roundUpToNextMultiple<unsigned int>(C.size2(), block_size));
+
+ k.local_work_size(0, block_size);
+ k.local_work_size(1, block_size);
+ const matrix_range<M1> & A = A_trans.lhs();
+ const matrix_range<M2> & B = B_trans.lhs();
+ viennacl::ocl::enqueue(
+ k(A.get(), cl_uint(A.start1()), cl_uint(A.start2()),
+ cl_uint(A.size1()), cl_uint(A.size2()),
+ cl_uint(A.get().internal_size1()), cl_uint(A.get().internal_size2()),
+ B.get(), cl_uint(B.start1()), cl_uint(B.start2()),
+ cl_uint(B.size1()), cl_uint(B.size2()),
+ cl_uint(B.get().internal_size1()), cl_uint(B.get().internal_size2()),
+ C.get(), cl_uint(C.start1()), cl_uint(C.start2()),
+ cl_uint(C.size1()), cl_uint(C.size2()),
+ cl_uint(C.get().internal_size1()), cl_uint(C.get().internal_size2()),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size),
+ viennacl::ocl::local_mem(sizeof(value_type) * block_size * block_size) )
+ );
+ }
@@ -552,7 +862,8 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "rank1_update");
- viennacl::ocl::enqueue(k(mat1, mat1.size1(), mat1.size2(), mat1.internal_size1(), mat1.internal_size2(), vec1, vec2));
+ viennacl::ocl::enqueue(k(mat1, cl_uint(mat1.size1()), cl_uint(mat1.size2()),
+ cl_uint(mat1.internal_size1()), cl_uint(mat1.internal_size2()), vec1, vec2));
}
@@ -578,7 +889,8 @@ namespace viennacl
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "scaled_rank1_update");
- viennacl::ocl::enqueue(k(mat1, mat1.size1(), mat1.size2(), mat1.internal_size1(), mat1.internal_size2(),
+ viennacl::ocl::enqueue(k(mat1, cl_uint(mat1.size1()), cl_uint(mat1.size2()),
+ cl_uint(mat1.internal_size1()), cl_uint(mat1.internal_size2()),
val, vec1, vec2));
}
diff --git a/viennacl/linalg/norm_1.hpp b/viennacl/linalg/norm_1.hpp
index c8a4c8f..5805be6 100644
--- a/viennacl/linalg/norm_1.hpp
+++ b/viennacl/linalg/norm_1.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_NORM_1_HPP_
+#define VIENNACL_LINALG_NORM_1_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_NORM_1_HPP_
-#define _VIENNACL_NORM_1_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file norm_1.hpp
@brief Generic interface for the l^1-norm. See viennacl/linalg/vector_operations.hpp for implementations.
@@ -21,7 +23,9 @@
#include <math.h> //for sqrt()
#include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
namespace viennacl
{
@@ -40,8 +44,8 @@ namespace viennacl
template< typename VectorT >
typename VectorT::value_type
norm_1(VectorT const& vector,
- typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "ublas .. " << std::endl;
return boost::numeric::ublas::norm_1(vector);
@@ -55,8 +59,8 @@ namespace viennacl
template< typename VectorT>
typename VectorT::value_type
norm_1(VectorT const& v1,
- typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
+ >::type* dummy = 0)
{
//std::cout << "stl .. " << std::endl;
typename VectorT::value_type result = 0;
@@ -74,8 +78,8 @@ namespace viennacl
const viennacl::vector<ScalarType, alignment>,
viennacl::op_norm_1 >
norm_1(viennacl::vector<ScalarType, alignment> const & vector,
- typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
+ >::type* dummy = 0)
{
return viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment>,
const viennacl::vector<ScalarType, alignment>,
diff --git a/viennacl/linalg/norm_2.hpp b/viennacl/linalg/norm_2.hpp
index e375fea..d046a18 100644
--- a/viennacl/linalg/norm_2.hpp
+++ b/viennacl/linalg/norm_2.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_NORM_2_HPP_
+#define VIENNACL_LINALG_NORM_2_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_NORM_2_HPP_
-#define _VIENNACL_NORM_2_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file norm_2.hpp
@brief Generic interface for the l^2-norm. See viennacl/linalg/vector_operations.hpp for implementations.
@@ -21,7 +23,9 @@
#include <math.h> //for sqrt()
#include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
namespace viennacl
{
@@ -48,8 +52,8 @@ namespace viennacl
template< typename VectorT >
typename VectorT::value_type
norm_2(VectorT const& v,
- typename viennacl::tools::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< VectorT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "mtl4 .. " << std::endl;
return mtl::two_norm(v);
@@ -79,8 +83,8 @@ namespace viennacl
template< typename VectorT >
typename VectorT::RealScalar
norm_2(VectorT const& v,
- typename viennacl::tools::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< VectorT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "ublas .. " << std::endl;
return v.norm();
@@ -105,8 +109,8 @@ namespace viennacl
template< typename VectorT >
typename VectorT::value_type
norm_2(VectorT const& v,
- typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "ublas .. " << std::endl;
return boost::numeric::ublas::norm_2(v);
@@ -121,8 +125,8 @@ namespace viennacl
template< typename VectorT>
typename VectorT::value_type
norm_2(VectorT const& v1,
- typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
+ >::type* dummy = 0)
{
//std::cout << "stl .. " << std::endl;
typename VectorT::value_type result = 0;
@@ -140,8 +144,8 @@ namespace viennacl
const viennacl::vector<ScalarType, alignment>,
viennacl::op_norm_2 >
norm_2(viennacl::vector<ScalarType, alignment> const & v,
- typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
+ >::type* dummy = 0)
{
//std::cout << "viennacl .. " << std::endl;
return viennacl::scalar_expression< const viennacl::vector<ScalarType, alignment>,
diff --git a/viennacl/linalg/norm_inf.hpp b/viennacl/linalg/norm_inf.hpp
index 695ab9f..a5ac852 100644
--- a/viennacl/linalg/norm_inf.hpp
+++ b/viennacl/linalg/norm_inf.hpp
@@ -1,27 +1,31 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_LINALG_NORM_INF_HPP_
+#define VIENNACL_LINALG_NORM_INF_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_NORM_INF_HPP_
-#define _VIENNACL_NORM_INF_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
-/** @file norm_1.hpp
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file norm_inf.hpp
@brief Generic interface for the l^infty-norm. See viennacl/linalg/vector_operations.hpp for implementations.
*/
#include <math.h> //for sqrt()
#include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
namespace viennacl
{
@@ -40,7 +44,7 @@ namespace viennacl
template< typename VectorT >
typename VectorT::value_type
norm_inf(VectorT const& v1,
- typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
+ typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< VectorT >::type >::value
>::type* dummy = 0)
{
// std::cout << "ublas .. " << std::endl;
@@ -55,7 +59,7 @@ namespace viennacl
template< typename VectorT>
typename VectorT::value_type
norm_inf(VectorT const& v1,
- typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
+ typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< VectorT >::type >::value
>::type* dummy = 0)
{
//std::cout << "stl .. " << std::endl;
@@ -77,7 +81,7 @@ namespace viennacl
const viennacl::vector<ScalarType, alignment>,
viennacl::op_norm_inf >
norm_inf(viennacl::vector<ScalarType, alignment> const & v1,
- typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< viennacl::vector<ScalarType, alignment> >::type >::value
>::type* dummy = 0)
{
//std::cout << "viennacl .. " << std::endl;
diff --git a/viennacl/linalg/prod.hpp b/viennacl/linalg/prod.hpp
index f1e41b2..d5965fc 100644
--- a/viennacl/linalg/prod.hpp
+++ b/viennacl/linalg/prod.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_PROD_HPP_
-#define _VIENNACL_PROD_HPP_
+#ifndef VIENNACL_LINALG_PROD_HPP_
+#define VIENNACL_LINALG_PROD_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file prod.hpp
@brief Generic interface for matrix-vector and matrix-matrix products.
@@ -22,7 +24,9 @@
*/
#include "viennacl/forwards.h"
-#include "tag_of.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/meta/tag_of.hpp"
#include <vector>
#include <map>
@@ -42,8 +46,8 @@ namespace viennacl
template< typename MatrixT, typename VectorT >
VectorT
prod(MatrixT const& matrix, VectorT const& vector,
- typename viennacl::tools::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< MatrixT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_mtl4< typename viennacl::traits::tag_of< MatrixT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "mtl4 .. " << std::endl;
return VectorT(matrix * vector);
@@ -57,8 +61,8 @@ namespace viennacl
template< typename MatrixT, typename VectorT >
VectorT
prod(MatrixT const& matrix, VectorT const& vector,
- typename viennacl::tools::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< MatrixT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_eigen< typename viennacl::traits::tag_of< MatrixT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "ublas .. " << std::endl;
return matrix * vector;
@@ -72,8 +76,8 @@ namespace viennacl
template< typename MatrixT, typename VectorT >
VectorT
prod(MatrixT const& matrix, VectorT const& vector,
- typename viennacl::tools::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< MatrixT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_ublas< typename viennacl::traits::tag_of< MatrixT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "ublas .. " << std::endl;
return boost::numeric::ublas::prod(matrix, vector);
@@ -123,8 +127,8 @@ namespace viennacl
template< typename MatrixT, typename VectorT >
VectorT
prod(MatrixT const& matrix, VectorT const& vector,
- typename viennacl::tools::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< MatrixT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_stl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "std .. " << std::endl;
return prod_impl(matrix, vector);
@@ -133,14 +137,57 @@ namespace viennacl
// ----------------------------------------------------
// VIENNACL
//
+ template< typename MatrixT1, typename MatrixT2 >
+ viennacl::matrix_expression< const MatrixT1,
+ const viennacl::matrix_range<MatrixT2>,
+ viennacl::op_prod >
+ prod(MatrixT1 const& A,
+ viennacl::matrix_range<MatrixT2> const& B,
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT1 >::type >::value
+ >::type* dummy = 0)
+ {
+ // std::cout << "viennacl .. " << std::endl;
+ return viennacl::matrix_expression< const MatrixT1,
+ const viennacl::matrix_range<MatrixT2>,
+ viennacl::op_prod >(A, B);
+ }
+
+
+ template< typename MatrixT1, typename MatrixT2 >
+ viennacl::matrix_expression< const MatrixT1,
+ const viennacl::matrix_expression<const viennacl::matrix_range<MatrixT2>,
+ const viennacl::matrix_range<MatrixT2>,
+ op_trans>,
+ viennacl::op_prod >
+ prod(MatrixT1 const & A,
+ viennacl::matrix_expression<const viennacl::matrix_range<MatrixT2>,
+ const viennacl::matrix_range<MatrixT2>,
+ op_trans> const & B,
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT2 >::type >::value
+ >::type* dummy = 0)
+ {
+ // std::cout << "viennacl .. " << std::endl;
+ return viennacl::matrix_expression< const MatrixT1,
+ const viennacl::matrix_expression<const viennacl::matrix_range<MatrixT2>,
+ const viennacl::matrix_range<MatrixT2>,
+ op_trans>,
+ viennacl::op_prod >(A, B);
+ }
+
+
+
+
+
+
+
template< typename MatrixT, typename NumericT, unsigned int ALIGNMENT >
viennacl::vector_expression< const MatrixT,
const viennacl::vector<NumericT, ALIGNMENT>,
viennacl::op_prod >
prod(MatrixT const& matrix,
viennacl::vector<NumericT, ALIGNMENT> const& vector,
- typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "viennacl .. " << std::endl;
return viennacl::linalg::prod_impl(matrix, vector);
@@ -152,8 +199,8 @@ namespace viennacl
viennacl::op_prod >
prod(MatrixT const& matrix_A,
viennacl::matrix<NumericT, F, ALIGNMENT> const& matrix_B,
- typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "viennacl .. " << std::endl;
return viennacl::matrix_expression< const MatrixT,
@@ -171,8 +218,8 @@ namespace viennacl
const viennacl::matrix_expression< const viennacl::matrix<NumericT, F, ALIGNMENT>,
const viennacl::matrix<NumericT, F, ALIGNMENT>,
viennacl::op_trans > & matrix_B,
- typename viennacl::tools::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
- >::type* dummy = 0)
+ typename viennacl::enable_if< viennacl::is_viennacl< typename viennacl::traits::tag_of< MatrixT >::type >::value
+ >::type* dummy = 0)
{
// std::cout << "viennacl .. " << std::endl;
return viennacl::matrix_expression< const MatrixT,
diff --git a/viennacl/linalg/qr.hpp b/viennacl/linalg/qr.hpp
new file mode 100644
index 0000000..fd1f6b7
--- /dev/null
+++ b/viennacl/linalg/qr.hpp
@@ -0,0 +1,586 @@
+#ifndef VIENNACL_LINALG_QR_HPP
+#define VIENNACL_LINALG_QR_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/qr.hpp
+ @brief Proivdes a QR factorization using a block-based approach. Experimental in 1.2.x.
+*/
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <cmath>
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/prod.hpp"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+
+ // orthogonalises j-th column of A
+ template <typename MatrixType, typename VectorType>
+ typename MatrixType::value_type setup_householder_vector(MatrixType const & A, VectorType & v, size_t j)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+
+ //compute norm of column below diagonal:
+ ScalarType sigma = 0;
+ ScalarType beta = 0;
+ for (size_t k = j+1; k<A.size1(); ++k)
+ sigma += A(k, j) * A(k, j);
+
+ //get v from A:
+ for (size_t k = j+1; k<A.size1(); ++k)
+ v[k] = A(k, j);
+
+ if (sigma == 0)
+ return 0;
+ else
+ {
+ ScalarType mu = sqrt(sigma + A(j,j)*A(j,j));
+ //std::cout << "mu: " << mu << std::endl;
+ //std::cout << "sigma: " << sigma << std::endl;
+
+ ScalarType v1;
+ if (A(j,j) <= 0)
+ v1 = A(j,j) - mu;
+ else
+ v1 = -sigma / (A(j,j) + mu);
+
+ beta = 2.0 * v1 * v1 / (sigma + v1 * v1);
+
+ //divide v by its diagonal element v[j]
+ v[j] = 1;
+ for (size_t k = j+1; k<A.size1(); ++k)
+ v[k] /= v1;
+ }
+
+ return beta;
+ }
+
+ // Apply (I - beta v v^T) to the k-th column of A, where v is the reflector starting at j-th row/column
+ template <typename MatrixType, typename VectorType, typename ScalarType>
+ void householder_reflect(MatrixType & A, VectorType & v, ScalarType beta, size_t j, size_t k)
+ {
+ ScalarType v_in_col = A(j,k);
+ for (size_t i=j+1; i<A.size1(); ++i)
+ v_in_col += v[i] * A(i,k);
+
+ for (size_t i=j; i<A.size1(); ++i)
+ A(i,k) -= beta * v_in_col * v[i];
+ }
+
+ // Apply (I - beta v v^T) to A, where v is the reflector starting at j-th row/column
+ template <typename MatrixType, typename VectorType, typename ScalarType>
+ void householder_reflect(MatrixType & A, VectorType & v, ScalarType beta, size_t j)
+ {
+ size_t column_end = A.size2();
+
+ for (size_t k=j; k<column_end; ++k) //over columns
+ householder_reflect(A, v, beta, j, k);
+ }
+
+
+ template <typename MatrixType, typename VectorType>
+ void write_householder_to_A(MatrixType & A, VectorType const & v, size_t j)
+ {
+ for (size_t i=j+1; i<A.size1(); ++i)
+ A(i,j) = v[i];
+ }
+
+
+ //takes an inplace QR matrix A and generates Q and R explicitly
+ template <typename MatrixType, typename VectorType>
+ void recoverQ(MatrixType const & A, VectorType const & betas, MatrixType & Q, MatrixType & R)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+
+ std::vector<ScalarType> v(A.size1());
+
+ Q.clear();
+ R.clear();
+
+ //
+ // Recover R from upper-triangular part of A:
+ //
+ size_t i_max = std::min(R.size1(), R.size2());
+ for (size_t i=0; i<i_max; ++i)
+ for (size_t j=i; j<R.size2(); ++j)
+ R(i,j) = A(i,j);
+
+ //
+ // Recover Q by applying all the Householder reflectors to the identity matrix:
+ //
+ for (size_t i=0; i<Q.size1(); ++i)
+ Q(i,i) = 1.0;
+
+ size_t j_max = std::min(A.size1(), A.size2());
+ for (size_t j=0; j<j_max; ++j)
+ {
+ size_t col_index = j_max - j - 1;
+ v[col_index] = 1.0;
+ for (size_t i=col_index+1; i<A.size1(); ++i)
+ v[i] = A(i, col_index);
+
+ /*std::cout << "Recovery with beta = " << betas[col_index] << ", j=" << col_index << std::endl;
+ std::cout << "v: ";
+ for (size_t i=0; i<v.size(); ++i)
+ std::cout << v[i] << ", ";
+ std::cout << std::endl;*/
+
+ if (betas[col_index] != 0)
+ householder_reflect(Q, v, betas[col_index], col_index);
+ }
+ }
+
+ /*template<typename MatrixType>
+ std::vector<typename MatrixType::value_type> qr(MatrixType & A)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+
+ std::vector<ScalarType> betas(A.size2());
+ std::vector<ScalarType> v(A.size1());
+
+ //copy A to Q:
+ for (size_t j=0; j<A.size2(); ++j)
+ {
+ betas[j] = setup_householder_vector(A, v, j);
+ householder_reflect(A, v, betas[j], j);
+ write_householder_to_A(A, v, j);
+ }
+
+ return betas;
+ }*/
+
+
+
+ class range
+ {
+ public:
+ range(size_t start, size_t end) : start_(start), end_(end) {}
+
+ size_t lower() const { return start_; }
+ size_t upper() const { return end_; }
+
+ private:
+ size_t start_;
+ size_t end_;
+ };
+
+ template <typename MatrixType>
+ class sub_matrix
+ {
+ public:
+ typedef typename MatrixType::value_type value_type;
+
+ sub_matrix(MatrixType & mat,
+ range row_range,
+ range col_range) : mat_(mat), row_range_(row_range), col_range_(col_range) {}
+
+ value_type operator()(size_t row, size_t col) const
+ {
+ assert(row < size1());
+ assert(col < size2());
+ return mat_(row + row_range_.lower(), col + col_range_.lower());
+ }
+
+ size_t size1() const { return row_range_.upper() - row_range_.lower(); }
+ size_t size2() const { return col_range_.upper() - col_range_.lower(); }
+
+ private:
+ MatrixType & mat_;
+ range row_range_;
+ range col_range_;
+ };
+
+
+ //computes C = prod(A, B)
+ template <typename MatrixTypeA, typename MatrixTypeB, typename MatrixTypeC>
+ void prod_AA(MatrixTypeA const & A, MatrixTypeB const & B, MatrixTypeC & C)
+ {
+ assert(C.size1() == A.size1());
+ assert(A.size2() == B.size1());
+ assert(B.size2() == C.size2());
+
+ typedef typename MatrixTypeC::value_type ScalarType;
+
+ for (size_t i=0; i<C.size1(); ++i)
+ {
+ for (size_t j=0; j<C.size2(); ++j)
+ {
+ ScalarType val = 0;
+ for (size_t k=0; k<A.size2(); ++k)
+ val += A(i, k) * B(k, j);
+ C(i, j) = val;
+ }
+ }
+ }
+
+ //computes C = prod(A^T, B)
+ template <typename MatrixTypeA, typename MatrixTypeB, typename MatrixTypeC>
+ void prod_TA(MatrixTypeA const & A, MatrixTypeB const & B, MatrixTypeC & C)
+ {
+ assert(C.size1() == A.size2());
+ assert(A.size1() == B.size1());
+ assert(B.size2() == C.size2());
+
+ typedef typename MatrixTypeC::value_type ScalarType;
+
+ for (size_t i=0; i<C.size1(); ++i)
+ {
+ for (size_t j=0; j<C.size2(); ++j)
+ {
+ ScalarType val = 0;
+ for (size_t k=0; k<A.size1(); ++k)
+ val += A(k, i) * B(k, j);
+ C(i, j) = val;
+ }
+ }
+ }
+
+
+
+ template<typename MatrixType>
+ std::vector<typename MatrixType::value_type> inplace_qr(MatrixType & A, std::size_t block_size = 32)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+
+ if ( A.size2() % block_size != 0 )
+ std::cout << "ViennaCL: Warning in inplace_qr(): Matrix columns are not divisible by block_size!" << std::endl;
+
+ std::vector<ScalarType> betas(A.size2());
+ std::vector<ScalarType> v(A.size1());
+
+ //size_t block_size = 90;
+ MatrixType Y(A.size1(), block_size); Y.clear();
+ MatrixType W(A.size1(), block_size); W.clear();
+
+ //run over A in a block-wise manner:
+ for (size_t j = 0; j < std::min(A.size1(), A.size2()); j += block_size)
+ {
+ //determine Householder vectors:
+ for (size_t k = 0; k < block_size; ++k)
+ {
+ betas[j+k] = setup_householder_vector(A, v, j+k);
+ for (size_t l = k; l < block_size; ++l)
+ householder_reflect(A, v, betas[j+k], j+k, j+l);
+
+ write_householder_to_A(A, v, j+k);
+ }
+
+ //
+ // Setup Y:
+ //
+ for (size_t k = 0; k < block_size; ++k)
+ {
+ //write Householder to Y:
+ Y(k,k) = 1.0;
+ for (size_t l=k+1; l<A.size1(); ++l)
+ Y(l,k) = A(l, j+k);
+ }
+
+ //
+ // Setup W:
+ //
+
+ //first vector:
+ W(j, 0) = -betas[j];
+ for (size_t l=j+1; l<A.size1(); ++l)
+ W(l,0) = -betas[j] * A(l, j);
+
+ //k-th column of W is given by -beta * (Id + W*Y^T) v_k, where W and Y have k-1 columns
+ for (size_t k = 1; k < block_size; ++k)
+ {
+ //compute Y^T v_k:
+ std::vector<ScalarType> temp(k); //actually of size (k \times 1)
+ for (size_t l=0; l<k; ++l)
+ for (size_t n=j; n<A.size1(); ++n)
+ temp[l] += Y(n, l) * Y(n, k);
+
+ //compute W * temp and add to z, which is directly written to W:
+ for (size_t n=0; n<A.size1(); ++n)
+ {
+ ScalarType val = 0;
+ for (size_t l=0; l<k; ++l)
+ val += temp[l] * W(n, l);
+ W(n, k) = -1.0 * betas[j+k] * (Y(n, k) + val);
+ }
+ }
+
+ //
+ //apply (I+WY^T)^T = I + Y W^T to the remaining columns of A:
+ //
+
+ if (A.size2() - j - block_size > 0)
+ {
+ //temp = prod(W^T, A)
+
+ MatrixType temp(block_size, A.size2() - j - block_size);
+
+ boost::numeric::ublas::range A_rows(j, A.size1());
+ boost::numeric::ublas::range A_cols(j+block_size, A.size2());
+ boost::numeric::ublas::matrix_range<MatrixType> A_part(A, A_rows, A_cols);
+
+ viennacl::matrix<ScalarType, viennacl::column_major> gpu_A_part(A_part.size1(), A_part.size2());
+ viennacl::copy(A_part, gpu_A_part);
+
+ //transfer W
+ boost::numeric::ublas::range W_cols(0, block_size);
+ boost::numeric::ublas::matrix_range<MatrixType> W_part(W, A_rows, W_cols);
+ viennacl::matrix<ScalarType, viennacl::column_major> gpu_W(W_part.size1(), W_part.size2());
+ viennacl::copy(W_part, gpu_W);
+
+ viennacl::matrix<ScalarType, viennacl::column_major> gpu_temp(gpu_W.size2(), gpu_A_part.size2());
+ gpu_temp = viennacl::linalg::prod(trans(gpu_W), gpu_A_part);
+
+
+
+ //A += Y * temp:
+ boost::numeric::ublas::range Y_cols(0, Y.size2());
+ boost::numeric::ublas::matrix_range<MatrixType> Y_part(Y, A_rows, Y_cols);
+
+ viennacl::matrix<ScalarType, viennacl::column_major> gpu_Y(Y_part.size1(), Y_part.size2());
+ viennacl::copy(Y_part, gpu_Y);
+
+ //A_part += prod(Y_part, temp);
+ gpu_A_part += prod(gpu_Y, gpu_temp);
+
+ MatrixType A_part_back(A_part.size1(), A_part.size2());
+ viennacl::copy(gpu_A_part, A_part_back);
+
+ A_part = A_part_back;
+ //A_part += prod(Y_part, temp);
+ }
+ }
+
+ return betas;
+ }
+
+
+ template<typename MatrixType>
+ std::vector<typename MatrixType::value_type> inplace_qr_ublas(MatrixType & A)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+
+ std::vector<ScalarType> betas(A.size2());
+ std::vector<ScalarType> v(A.size1());
+
+ size_t block_size = 3;
+ MatrixType Y(A.size1(), block_size); Y.clear();
+ MatrixType W(A.size1(), block_size); W.clear();
+
+ //run over A in a block-wise manner:
+ for (size_t j = 0; j < std::min(A.size1(), A.size2()); j += block_size)
+ {
+ //determine Householder vectors:
+ for (size_t k = 0; k < block_size; ++k)
+ {
+ betas[j+k] = setup_householder_vector(A, v, j+k);
+ for (size_t l = k; l < block_size; ++l)
+ householder_reflect(A, v, betas[j+k], j+k, j+l);
+
+ write_householder_to_A(A, v, j+k);
+ }
+
+ //
+ // Setup Y:
+ //
+ for (size_t k = 0; k < block_size; ++k)
+ {
+ //write Householder to Y:
+ Y(k,k) = 1.0;
+ for (size_t l=k+1; l<A.size1(); ++l)
+ Y(l,k) = A(l, j+k);
+ }
+
+ //
+ // Setup W:
+ //
+
+ //first vector:
+ W(j, 0) = -betas[j];
+ for (size_t l=j+1; l<A.size1(); ++l)
+ W(l,0) = -betas[j] * A(l, j);
+
+ //k-th column of W is given by -beta * (Id + W*Y^T) v_k, where W and Y have k-1 columns
+ for (size_t k = 1; k < block_size; ++k)
+ {
+ //compute Y^T v_k:
+ std::vector<ScalarType> temp(k); //actually of size (k \times 1)
+ for (size_t l=0; l<k; ++l)
+ for (size_t n=j; n<A.size1(); ++n)
+ temp[l] += Y(n, l) * Y(n, k);
+
+ //compute W * temp and add to z, which is directly written to W:
+ for (size_t n=0; n<A.size1(); ++n)
+ {
+ ScalarType val = 0;
+ for (size_t l=0; l<k; ++l)
+ val += temp[l] * W(n, l);
+ W(n, k) = -1.0 * betas[j+k] * (Y(n, k) + val);
+ }
+ }
+
+ //
+ //apply (I+WY^T)^T = I + Y W^T to the remaining columns of A:
+ //
+
+ if (A.size2() - j - block_size > 0)
+ {
+ //temp = prod(W^T, A)
+ MatrixType temp(block_size, A.size2() - j - block_size);
+
+ boost::numeric::ublas::range A_rows(j, A.size1());
+ boost::numeric::ublas::range A_cols(j+block_size, A.size2());
+ boost::numeric::ublas::matrix_range<MatrixType> A_part(A, A_rows, A_cols);
+
+ boost::numeric::ublas::range W_cols(0, block_size);
+ boost::numeric::ublas::matrix_range<MatrixType> W_part(W, A_rows, W_cols);
+
+ temp = boost::numeric::ublas::prod(trans(W_part), A_part);
+
+
+ //A += Y * temp:
+ boost::numeric::ublas::range Y_cols(0, Y.size2());
+ boost::numeric::ublas::matrix_range<MatrixType> Y_part(Y, A_rows, Y_cols);
+
+ A_part += prod(Y_part, temp);
+ }
+ }
+
+ return betas;
+ }
+
+
+ template<typename MatrixType>
+ std::vector<typename MatrixType::value_type> inplace_qr_pure(MatrixType & A)
+ {
+ typedef typename MatrixType::value_type ScalarType;
+
+ std::vector<ScalarType> betas(A.size2());
+ std::vector<ScalarType> v(A.size1());
+
+ size_t block_size = 5;
+ MatrixType Y(A.size1(), block_size); Y.clear();
+ MatrixType W(A.size1(), block_size); W.clear();
+
+ //run over A in a block-wise manner:
+ for (size_t j = 0; j < std::min(A.size1(), A.size2()); j += block_size)
+ {
+ //determine Householder vectors:
+ for (size_t k = 0; k < block_size; ++k)
+ {
+ betas[j+k] = setup_householder_vector(A, v, j+k);
+ for (size_t l = k; l < block_size; ++l)
+ householder_reflect(A, v, betas[j+k], j+k, j+l);
+
+ write_householder_to_A(A, v, j+k);
+ }
+
+ //
+ // Setup Y:
+ //
+ for (size_t k = 0; k < block_size; ++k)
+ {
+ //write Householder to Y:
+ Y(k,k) = 1.0;
+ for (size_t l=k+1; l<A.size1(); ++l)
+ Y(l,k) = A(l, j+k);
+ }
+
+ //
+ // Setup W:
+ //
+
+ //first vector:
+ W(j, 0) = -betas[j];
+ for (size_t l=j+1; l<A.size1(); ++l)
+ W(l,0) = -betas[j] * A(l, j);
+
+ //k-th column of W is given by -beta * (Id + W*Y^T) v_k, where W and Y have k-1 columns
+ for (size_t k = 1; k < block_size; ++k)
+ {
+ //compute Y^T v_k:
+ std::vector<ScalarType> temp(k); //actually of size (k \times 1)
+ for (size_t l=0; l<k; ++l)
+ for (size_t n=j; n<A.size1(); ++n)
+ temp[l] += Y(n, l) * Y(n, k);
+
+ //compute W * temp and add to z, which is directly written to W:
+ for (size_t n=0; n<A.size1(); ++n)
+ {
+ ScalarType val = 0;
+ for (size_t l=0; l<k; ++l)
+ val += temp[l] * W(n, l);
+ W(n, k) = -1.0 * betas[j+k] * (Y(n, k) + val);
+ }
+ }
+
+ //
+ //apply (I+WY^T)^T = I + Y W^T to the remaining columns of A:
+ //
+
+ if (A.size2() - j - block_size > 0)
+ {
+ //temp = prod(W^T, A)
+ MatrixType temp(block_size, A.size2() - j - block_size);
+ ScalarType entry = 0;
+ for (size_t l = 0; l < temp.size2(); ++l)
+ {
+ for (size_t k = 0; k < temp.size1(); ++k)
+ {
+ entry = 0;
+ for (size_t n = j; n < A.size1(); ++n)
+ entry += W(n, k) * A(n, j + block_size + l);
+ temp(k,l) = entry;
+ }
+ }
+
+ //A += Y * temp:
+ for (size_t l = j+block_size; l < A.size2(); ++l)
+ {
+ for (size_t k = j; k<A.size1(); ++k)
+ {
+ ScalarType val = 0;
+ for (size_t n=0; n<block_size; ++n)
+ val += Y(k, n) * temp(n, l-j-block_size);
+ A(k, l) += val;
+ }
+ }
+ }
+ }
+
+ return betas;
+ }
+
+ } //linalg
+} //viennacl
+
+
+#endif
diff --git a/viennacl/linalg/row_scaling.hpp b/viennacl/linalg/row_scaling.hpp
index 2f055b5..7e199ad 100644
--- a/viennacl/linalg/row_scaling.hpp
+++ b/viennacl/linalg/row_scaling.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_ROW_SCALING_HPP_
-#define _VIENNACL_ROW_SCALING_HPP_
+#ifndef VIENNACL_LINALG_ROW_SCALING_HPP_
+#define VIENNACL_LINALG_ROW_SCALING_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file row_scaling.hpp
@brief A row normalization preconditioner is implemented here
@@ -196,13 +198,17 @@ namespace viennacl
template <unsigned int ALIGNMENT>
void apply(viennacl::vector<ScalarType, ALIGNMENT> & vec) const
{
- assert(system_matrix.size1() == vec.size());
+ assert(viennacl::traits::size1(system_matrix) == viennacl::traits::size(vec));
- //run kernel (reuse Jacobi kernel):
+ //run kernel:
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<ScalarType, ALIGNMENT>::program_name(),
"diag_precond");
- viennacl::ocl::enqueue( k(diag_M_inv, vec, static_cast<cl_uint>(vec.size())) );
+ viennacl::ocl::enqueue(
+ k(viennacl::traits::handle(diag_M_inv), cl_uint(viennacl::traits::start(diag_M_inv)), cl_uint(viennacl::traits::size(diag_M_inv)),
+ viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)) )
+ );
+
}
private:
diff --git a/viennacl/linalg/spai.hpp b/viennacl/linalg/spai.hpp
new file mode 100644
index 0000000..6b07964
--- /dev/null
+++ b/viennacl/linalg/spai.hpp
@@ -0,0 +1,291 @@
+#ifndef VIENNACL_LINALG_SPAI_HPP
+#define VIENNACL_LINALG_SPAI_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/linalg/spai.hpp
+ @brief Main include file for the sparse approximate inverse preconditioner family (SPAI and FSPAI). Experimental in 1.2.x.
+
+ Most implementation contributed by Nikolay Lukash.
+*/
+
+
+#include <utility>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <vector>
+#include <math.h>
+#include <map>
+
+//local includes
+#include "viennacl/linalg/detail/spai/spai_tag.hpp"
+#include "viennacl/linalg/qr.hpp"
+#include "viennacl/linalg/detail/spai/spai-dynamic.hpp"
+#include "viennacl/linalg/detail/spai/spai-static.hpp"
+#include "viennacl/linalg/detail/spai/sparse_vector.hpp"
+#include "viennacl/linalg/detail/spai/block_matrix.hpp"
+#include "viennacl/linalg/detail/spai/block_vector.hpp"
+#include "viennacl/linalg/detail/spai/fspai.hpp"
+#include "viennacl/linalg/detail/spai/spai.hpp"
+
+//boost includes
+#include "boost/numeric/ublas/vector.hpp"
+#include "boost/numeric/ublas/matrix.hpp"
+#include "boost/numeric/ublas/matrix_proxy.hpp"
+#include "boost/numeric/ublas/vector_proxy.hpp"
+#include "boost/numeric/ublas/storage.hpp"
+#include "boost/numeric/ublas/io.hpp"
+#include "boost/numeric/ublas/lu.hpp"
+#include "boost/numeric/ublas/triangular.hpp"
+#include "boost/numeric/ublas/matrix_expression.hpp"
+
+// ViennaCL includes
+#include "viennacl/linalg/prod.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/compressed_matrix.hpp"
+#include "viennacl/linalg/compressed_matrix_operations.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/linalg/inner_prod.hpp"
+#include "viennacl/linalg/ilu.hpp"
+#include "viennacl/ocl/backend.hpp"
+#include "viennacl/linalg/kernels/spai_source.h"
+#include "viennacl/linalg/kernels/spai_kernels.h"
+
+
+namespace viennacl
+{
+ namespace linalg
+ {
+
+ typedef viennacl::linalg::detail::spai::spai_tag spai_tag;
+ typedef viennacl::linalg::detail::spai::fspai_tag fspai_tag;
+
+ /** @brief Implementation of the SParse Approximate Inverse Algorithm
+ * @param Matrix matrix that is used for computations
+ * @param Vector vector that is used for computations
+ */
+ //UBLAS version
+ template <typename MatrixType>
+ class spai_precond
+ {
+ public:
+ typedef typename MatrixType::value_type ScalarType;
+ typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+ /** @brief Constructor
+ * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+ * @param tag spai tag
+ */
+ spai_precond(const MatrixType& A,
+ const spai_tag& tag): _tag(tag){
+
+ //VCLMatrixType vcl_Ap((unsigned int)A.size2(), (unsigned int)A.size1()), vcl_A((unsigned int)A.size1(), (unsigned int)A.size2()),
+ //vcl_At((unsigned int)A.size1(), (unsigned int)A.size2());
+ //UBLASDenseMatrixType dA = A;
+ MatrixType pA(A.size1(), A.size2());
+ MatrixType At;
+ //std::cout<<A<<std::endl;
+ if(!_tag.getIsRight()){
+ viennacl::linalg::detail::spai::sparse_transpose(A, At);
+ }else{
+ At = A;
+ }
+ pA = At;
+ viennacl::linalg::detail::spai::initPreconditioner(pA, _spai_m);
+ viennacl::linalg::detail::spai::computeSPAI(At, _spai_m, _tag);
+ //(At, pA, _tag.getIsRight(), _tag.getIsStatic(), (ScalarType)_tag.getResidualNormThreshold(), (unsigned int)_tag.getIterationLimit(),
+ //_spai_m);
+
+ }
+ /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+ * @param vec rhs vector
+ */
+ void apply(VectorType& vec) const {
+ vec = viennacl::linalg::prod(_spai_m, vec);
+ }
+ private:
+ // variables
+ spai_tag _tag;
+ // result of SPAI
+ MatrixType _spai_m;
+ };
+
+ //VIENNACL version
+ template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+ class spai_precond< viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> >
+ {
+ typedef viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> MatrixType;
+ typedef boost::numeric::ublas::compressed_matrix<ScalarType> UBLASSparseMatrixType;
+ typedef viennacl::vector<ScalarType> VectorType;
+ typedef viennacl::matrix<ScalarType> VCLDenseMatrixType;
+
+ typedef boost::numeric::ublas::vector<ScalarType> UBLASVectorType;
+ public:
+
+ /** @brief Constructor
+ * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+ * @param tag spai tag
+ */
+ spai_precond(const MatrixType& A,
+ const spai_tag& tag): _tag(tag)
+ {
+ viennacl::linalg::kernels::spai<ScalarType, 1>::init();
+
+ MatrixType At(A.size1(), A.size2());
+ UBLASSparseMatrixType ubls_A, ubls_spai_m;
+ UBLASSparseMatrixType ubls_At;
+ viennacl::copy(A, ubls_A);;
+ if(!_tag.getIsRight()){
+ viennacl::linalg::detail::spai::sparse_transpose(ubls_A, ubls_At);
+ }
+ else{
+ ubls_At = ubls_A;
+ }
+ //current pattern is A
+ //pA = ubls_At;
+ //execute SPAI with ublas matrix types
+ viennacl::linalg::detail::spai::initPreconditioner(ubls_At, ubls_spai_m);
+ viennacl::copy(ubls_At, At);
+ viennacl::linalg::detail::spai::computeSPAI(At, ubls_At, ubls_spai_m, _spai_m, _tag);
+ //viennacl::copy(ubls_spai_m, _spai_m);
+
+ }
+ /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+ * @param vec rhs vector
+ */
+ void apply(VectorType& vec) const {
+ vec = viennacl::linalg::prod(_spai_m, vec);
+ }
+ private:
+ // variables
+ spai_tag _tag;
+ // result of SPAI
+ MatrixType _spai_m;
+ };
+
+
+ //
+ // FSPAI
+ //
+
+ /** @brief Implementation of the Factored SParse Approximate Inverse Algorithm
+ * @param Matrix matrix that is used for computations
+ * @param Vector vector that is used for computations
+ */
+ //UBLAS version
+ template <typename MatrixType>
+ class fspai_precond
+ {
+ typedef typename MatrixType::value_type ScalarType;
+ typedef typename boost::numeric::ublas::vector<ScalarType> VectorType;
+ typedef typename boost::numeric::ublas::matrix<ScalarType> UBLASDenseMatrixType;
+ typedef typename viennacl::matrix<ScalarType> VCLMatrixType;
+ public:
+
+ /** @brief Constructor
+ * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+ * @param tag SPAI configuration tag
+ */
+ fspai_precond(const MatrixType& A,
+ const fspai_tag& tag): tag_(tag)
+ {
+ MatrixType pA = A;
+ viennacl::linalg::detail::spai::computeFSPAI(A, pA, L, L_trans, tag_);
+ }
+
+ /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+ * @param vec rhs vector
+ */
+ void apply(VectorType& vec) const
+ {
+ VectorType temp = viennacl::linalg::prod(L_trans, vec);
+ vec = viennacl::linalg::prod(L, temp);
+ }
+
+ private:
+ // variables
+ const fspai_tag & tag_;
+ // result of SPAI
+ MatrixType L;
+ MatrixType L_trans;
+ };
+
+
+
+
+
+ //
+ // ViennaCL version
+ //
+ template <typename ScalarType, unsigned int MAT_ALIGNMENT>
+ class fspai_precond< viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> >
+ {
+ typedef viennacl::compressed_matrix<ScalarType, MAT_ALIGNMENT> MatrixType;
+ typedef viennacl::vector<ScalarType> VectorType;
+ typedef viennacl::matrix<ScalarType> VCLDenseMatrixType;
+ typedef boost::numeric::ublas::compressed_matrix<ScalarType> UBLASSparseMatrixType;
+ typedef boost::numeric::ublas::vector<ScalarType> UBLASVectorType;
+ public:
+
+ /** @brief Constructor
+ * @param A matrix whose approximate inverse is calculated. Must be quadratic.
+ * @param tag SPAI configuration tag
+ */
+ fspai_precond(const MatrixType & A,
+ const fspai_tag & tag): tag_(tag){
+ //UBLASSparseMatrixType ubls_A;
+ UBLASSparseMatrixType ublas_A(A.size1(), A.size2());
+ UBLASSparseMatrixType pA(A.size1(), A.size2());
+ UBLASSparseMatrixType ublas_L(A.size1(), A.size2());
+ UBLASSparseMatrixType ublas_L_trans(A.size1(), A.size2());
+ viennacl::copy(A, ublas_A);
+ //viennacl::copy(ubls_A, vcl_A);
+ //vcl_At = viennacl::linalg::prod(vcl_A, vcl_A);
+ //vcl_pA = viennacl::linalg::prod(vcl_A, vcl_At);
+ //viennacl::copy(vcl_pA, pA);
+ pA = ublas_A;
+ //execute SPAI with ublas matrix types
+ viennacl::linalg::detail::spai::computeFSPAI(ublas_A, pA, ublas_L, ublas_L_trans, tag_);
+ //copy back to GPU
+ viennacl::copy(ublas_L, L);
+ viennacl::copy(ublas_L_trans, L_trans);
+ }
+
+
+ /** @brief Application of current preconditioner, multiplication on the right-hand side vector
+ * @param vec rhs vector
+ */
+ void apply(VectorType& vec) const
+ {
+ VectorType temp(vec.size());
+ temp = viennacl::linalg::prod(L_trans, vec);
+ vec = viennacl::linalg::prod(L, temp);
+ }
+
+ private:
+ // variables
+ const fspai_tag & tag_;
+ MatrixType L;
+ MatrixType L_trans;
+ };
+
+
+ }
+}
+#endif
\ No newline at end of file
diff --git a/viennacl/linalg/tag_of.hpp b/viennacl/linalg/tag_of.hpp
deleted file mode 100644
index b588491..0000000
--- a/viennacl/linalg/tag_of.hpp
+++ /dev/null
@@ -1,310 +0,0 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-
-#ifndef _VIENNACL_TAGOF_HPP_
-#define _VIENNACL_TAGOF_HPP_
-
-/** @file tag_of.hpp
- @brief Dispatch facility for distinguishing between ublas, STL and ViennaCL types
-*/
-
-#ifdef VIENNACL_HAVE_UBLAS
-#include <boost/numeric/ublas/matrix_sparse.hpp>
-#include <boost/numeric/ublas/matrix.hpp>
-#include <boost/numeric/ublas/vector.hpp>
-#endif
-
-#ifdef VIENNACL_HAVE_EIGEN
-#include <Eigen/Core>
-#include <Eigen/Sparse>
-#endif
-
-#ifdef VIENNACL_HAVE_MTL4
-#include <boost/numeric/mtl/mtl.hpp>
-#endif
-
-namespace viennacl
-{
-
- // ----------------------------------------------------
- // TAGS
- //
- struct tag_none {};
- struct tag_mtl4 {};
- struct tag_eigen {};
- struct tag_ublas {};
- struct tag_stl {};
- struct tag_viennacl {};
-
- namespace traits
- {
- // ----------------------------------------------------
- // GENERIC BASE
- //
- /** @brief Generic base for wrapping other linear algebra packages
- *
- * Maps types to tags, e.g. viennacl::vector to tag_viennacl, ublas::vector to tag_ublas
- * if the matrix type is unknown, tag_none is returned
- *
- * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
- *
- * @tparam T The type to be inspected
- */
- template< typename T, typename Active = void >
- struct tag_of;
-
- template < typename Sequence, typename Active >
- struct tag_of
- {
- typedef viennacl::tag_none type;
- };
-
- #ifdef VIENNACL_HAVE_MTL4
- // ----------------------------------------------------
- // MTL4
- //
- template <typename ScalarType>
- struct tag_of< mtl::dense_vector<ScalarType> >
- {
- typedef viennacl::tag_mtl4 type;
- };
-
- template <typename ScalarType>
- struct tag_of< mtl::compressed2D<ScalarType> >
- {
- typedef viennacl::tag_mtl4 type;
- };
-
- template <typename ScalarType, typename T>
- struct tag_of< mtl::dense2D<ScalarType, T> >
- {
- typedef viennacl::tag_mtl4 type;
- };
- #endif
-
-
- #ifdef VIENNACL_HAVE_EIGEN
- // ----------------------------------------------------
- // Eigen
- //
- template <>
- struct tag_of< Eigen::VectorXf >
- {
- typedef viennacl::tag_eigen type;
- };
-
- template <>
- struct tag_of< Eigen::VectorXd >
- {
- typedef viennacl::tag_eigen type;
- };
-
- template <>
- struct tag_of< Eigen::MatrixXf >
- {
- typedef viennacl::tag_eigen type;
- };
-
- template <>
- struct tag_of< Eigen::MatrixXd >
- {
- typedef viennacl::tag_eigen type;
- };
-
- template <typename ScalarType, int option>
- struct tag_of< Eigen::SparseMatrix<ScalarType, option> >
- {
- typedef viennacl::tag_eigen type;
- };
-
- #endif
-
- #ifdef VIENNACL_HAVE_UBLAS
- // ----------------------------------------------------
- // UBLAS
- //
- template< typename T >
- struct tag_of< boost::numeric::ublas::vector<T> >
- {
- typedef viennacl::tag_ublas type;
- };
-
- template< typename T >
- struct tag_of< boost::numeric::ublas::matrix<T> >
- {
- typedef viennacl::tag_ublas type;
- };
-
- template< typename T1, typename T2 >
- struct tag_of< boost::numeric::ublas::matrix_unary2<T1,T2> >
- {
- typedef viennacl::tag_ublas type;
- };
-
- template< typename T1, typename T2 >
- struct tag_of< boost::numeric::ublas::compressed_matrix<T1,T2> >
- {
- typedef viennacl::tag_ublas type;
- };
-
- #endif
-
- // ----------------------------------------------------
- // STL types
- //
-
- //vector
- template< typename T, typename A >
- struct tag_of< std::vector<T, A> >
- {
- typedef viennacl::tag_stl type;
- };
-
- //dense matrix
- template< typename T, typename A >
- struct tag_of< std::vector<std::vector<T, A>, A> >
- {
- typedef viennacl::tag_stl type;
- };
-
- //sparse matrix (vector of maps)
- template< typename KEY, typename DATA, typename COMPARE, typename AMAP, typename AVEC>
- struct tag_of< std::vector<std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
- {
- typedef viennacl::tag_stl type;
- };
-
-
- // ----------------------------------------------------
- // VIENNACL
- //
- template< typename T, unsigned int alignment >
- struct tag_of< viennacl::vector<T, alignment> >
- {
- typedef viennacl::tag_viennacl type;
- };
-
- template< typename T, typename F, unsigned int alignment >
- struct tag_of< viennacl::matrix<T, F, alignment> >
- {
- typedef viennacl::tag_viennacl type;
- };
-
- template< typename T1, typename T2, typename OP >
- struct tag_of< viennacl::matrix_expression<T1,T2,OP> >
- {
- typedef viennacl::tag_viennacl type;
- };
-
- template< typename T, unsigned int I>
- struct tag_of< viennacl::compressed_matrix<T,I> >
- {
- typedef viennacl::tag_viennacl type;
- };
-
- template< typename T, unsigned int I>
- struct tag_of< viennacl::coordinate_matrix<T,I> >
- {
- typedef viennacl::tag_viennacl type;
- };
- // ----------------------------------------------------
- } // end namespace traits
-
-
- /** @brief Meta function which checks whether a tag is tag_mtl4
- *
- * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
- */
- template <typename Tag>
- struct is_mtl4
- {
- enum { value = false };
- };
-
- template <>
- struct is_mtl4< viennacl::tag_mtl4 >
- {
- enum { value = true };
- };
-
- /** @brief Meta function which checks whether a tag is tag_eigen
- *
- * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
- */
- template <typename Tag>
- struct is_eigen
- {
- enum { value = false };
- };
-
- template <>
- struct is_eigen< viennacl::tag_eigen >
- {
- enum { value = true };
- };
-
-
- /** @brief Meta function which checks whether a tag is tag_ublas
- *
- * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
- */
- template <typename Tag>
- struct is_ublas
- {
- enum { value = false };
- };
-
- template <>
- struct is_ublas< viennacl::tag_ublas >
- {
- enum { value = true };
- };
-
- /** @brief Meta function which checks whether a tag is tag_ublas
- *
- * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
- */
- template <typename Tag>
- struct is_stl
- {
- enum { value = false };
- };
-
- template <>
- struct is_stl< viennacl::tag_stl >
- {
- enum { value = true };
- };
-
-
- /** @brief Meta function which checks whether a tag is tag_viennacl
- *
- * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
- */
- template <typename Tag>
- struct is_viennacl
- {
- enum { value = false };
- };
-
- template <>
- struct is_viennacl< viennacl::tag_viennacl >
- {
- enum { value = true };
- };
-
-} // end namespace viennacl
-
-#endif
diff --git a/viennacl/linalg/toeplitz_matrix_operations.hpp b/viennacl/linalg/toeplitz_matrix_operations.hpp
new file mode 100644
index 0000000..5e1fbf9
--- /dev/null
+++ b/viennacl/linalg/toeplitz_matrix_operations.hpp
@@ -0,0 +1,216 @@
+#ifndef VIENNACL_LINALG_TOEPLITZ_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_TOEPLITZ_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file toeplitz_matrix_operations.hpp
+ @brief Implementations of operations using toeplitz_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ vector_expression<const toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod > prod_impl(const toeplitz_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+ {
+ return vector_expression<const toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod >(mat, vec);
+ }
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a toeplitz_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ viennacl::vector_expression<const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod > prod_impl(const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ size_t NUM_THREADS)
+ {
+ return viennacl::vector_expression<const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod >(mat, vec);
+ }
+
+ /** @brief Carries out matrix-vector multiplication with a toeplitz_matrix
+ *
+ * Implementation of the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param result The result vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(const viennacl::toeplitz_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+ {
+ assert(mat.size1() == result.size());
+ assert(mat.size2() == vec.size());
+
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tep(mat.elements().size() * 2);
+ viennacl::detail::fft::real_to_complex(mat.elements(), tep, mat.elements().size());
+
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 4);
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 4);
+
+ tmp.clear();
+ copy(vec, tmp);
+ viennacl::detail::fft::real_to_complex(tmp, tmp2, vec.size() * 2);
+ viennacl::linalg::convolve(tep, tmp2, tmp);
+ viennacl::detail::fft::complex_to_real(tmp, tmp2, vec.size() * 2);
+ copy(tmp2.begin(), tmp2.begin() + vec.size(), result.begin());
+ }
+
+ } //namespace linalg
+
+
+
+ /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+ viennacl::op_prod> & proxy)
+ {
+ // check for the special case x = A * x
+ if (proxy.rhs().handle() == this->handle())
+ {
+ viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this = result;
+ return *this;
+ }
+ else
+ {
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+ return *this;
+ }
+ return *this;
+ }
+
+ //v += A * x
+ /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this += result;
+ return *this;
+ }
+
+ /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this -= result;
+ return *this;
+ }
+
+
+ //free functions:
+ /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result += *this;
+ return result;
+ }
+
+ /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result = *this - result;
+ return result;
+ }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/vandermonde_matrix_operations.hpp b/viennacl/linalg/vandermonde_matrix_operations.hpp
new file mode 100644
index 0000000..01dcb68
--- /dev/null
+++ b/viennacl/linalg/vandermonde_matrix_operations.hpp
@@ -0,0 +1,212 @@
+#ifndef VIENNACL_LINALG_VANDERMONDE_MATRIX_OPERATIONS_HPP_
+#define VIENNACL_LINALG_VANDERMONDE_MATRIX_OPERATIONS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file vandermonde_matrix_operations.hpp
+ @brief Implementations of operations using vandermonde_matrix
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/ocl/device.hpp"
+#include "viennacl/ocl/handle.hpp"
+#include "viennacl/ocl/kernel.hpp"
+#include "viennacl/scalar.hpp"
+#include "viennacl/vector.hpp"
+#include "viennacl/tools/tools.hpp"
+#include "viennacl/fft.hpp"
+//#include "viennacl/linalg/kernels/coordinate_matrix_kernels.h"
+
+namespace viennacl
+{
+ namespace linalg
+ {
+
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a compressed_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ vector_expression<const vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod > prod_impl(const vandermonde_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec)
+ {
+ return vector_expression<const vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+ const vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ op_prod >(mat, vec);
+ }
+
+ // A * x
+ /** @brief Returns a proxy class that represents matrix-vector multiplication with a vandermonde_matrix
+ *
+ * This is used for the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param NUM_THREADS Number of threads per work group. Can be used for fine-tuning.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ viennacl::vector_expression<const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod > prod_impl(const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ size_t NUM_THREADS)
+ {
+ return viennacl::vector_expression<const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
+ viennacl::op_prod >(mat, vec);
+ }
+
+ /** @brief Carries out matrix-vector multiplication with a vandermonde_matrix
+ *
+ * Implementation of the convenience expression result = prod(mat, vec);
+ *
+ * @param mat The matrix
+ * @param vec The vector
+ * @param result The result vector
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(const viennacl::vandermonde_matrix<SCALARTYPE, ALIGNMENT> & mat,
+ const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & vec,
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> & result)
+ {
+ assert(mat.size1() == result.size());
+ assert(mat.size2() == vec.size());
+
+ //fft::vandermonde_prod<SCALARTYPE>(mat.handle(), vec.handle(), result.handle(), mat.size1());
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+
+ viennacl::ocl::kernel& kernel = viennacl::ocl::current_context()
+ .get_program(viennacl::linalg::kernels::fft<SCALARTYPE, 1>::program_name())
+ .get_kernel("vandermonde_prod");
+ viennacl::ocl::enqueue(kernel(mat, vec, result, static_cast<cl_uint>(mat.size1())));
+ }
+
+ } //namespace linalg
+
+
+
+ /** @brief Implementation of the operation v1 = A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator=(const viennacl::vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const viennacl::vector<SCALARTYPE, ALIGNMENT>,
+ viennacl::op_prod> & proxy)
+ {
+ // check for the special case x = A * x
+ if (proxy.rhs().handle() == this->handle())
+ {
+ viennacl::vector<SCALARTYPE, ALIGNMENT> result(proxy.rhs().size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this = result;
+ return *this;
+ }
+ else
+ {
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+ return *this;
+ }
+ return *this;
+ }
+
+ //v += A * x
+ /** @brief Implementation of the operation v1 += A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this += result;
+ return *this;
+ }
+
+ /** @brief Implementation of the operation v1 -= A * v2, where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT> &
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ vector<SCALARTYPE, ALIGNMENT> result(proxy.get_lhs().size1());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ *this -= result;
+ return *this;
+ }
+
+
+ //free functions:
+ /** @brief Implementation of the operation 'result = v1 + A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator+(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result += *this;
+ return result;
+ }
+
+ /** @brief Implementation of the operation 'result = v1 - A * v2', where A is a matrix
+ *
+ * @param proxy An expression template proxy class.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ template <unsigned int MAT_ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>
+ viennacl::vector<SCALARTYPE, ALIGNMENT>::operator-(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy)
+ {
+ assert(proxy.get_lhs().size1() == size());
+ vector<SCALARTYPE, ALIGNMENT> result(size());
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), result);
+ result = *this - result;
+ return result;
+ }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/linalg/vector_operations.hpp b/viennacl/linalg/vector_operations.hpp
index ad92b2d..bc09f19 100644
--- a/viennacl/linalg/vector_operations.hpp
+++ b/viennacl/linalg/vector_operations.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_VECTOR_OPERATIONS_HPP_
-#define _VIENNACL_VECTOR_OPERATIONS_HPP_
+#ifndef VIENNACL_VECTOR_OPERATIONS_HPP_
+#define VIENNACL_VECTOR_OPERATIONS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file vector_operations.hpp
@brief Implementations of vector operations.
@@ -26,6 +28,11 @@
#include "viennacl/scalar.hpp"
#include "viennacl/tools/tools.hpp"
#include "viennacl/linalg/kernels/vector_kernels.h"
+#include "viennacl/meta/predicate.hpp"
+#include "viennacl/meta/enable_if.hpp"
+#include "viennacl/traits/size.hpp"
+#include "viennacl/traits/start.hpp"
+#include "viennacl/traits/handle.hpp"
namespace viennacl
{
@@ -37,17 +44,33 @@ namespace viennacl
* @param vec2 The second addend.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void add(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename V2, typename V3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_vector<V3>::value
+ >::type
+ add(const V1 & vec1,
+ const V2 & vec2,
+ V3 & result)
{
- assert(vec1.size() == vec2.size() && vec1.size() == result.size());
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in add()!");
- unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "add");
+ //unsigned int size = std::min(viennacl::traits::internal_size(vec1),
+ // viennacl::traits::internal_size(vec2));
- viennacl::ocl::enqueue(k(vec1, vec2, result, size));
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "add");
+
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)) )
+ );
}
/** @brief Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -57,17 +80,33 @@ namespace viennacl
* @param vec1 The result.
* @param vec2 The addend
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2)
+ template <typename V1, typename V2>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ >::type
+ inplace_add(V1 & vec1,
+ const V2 & vec2)
{
- assert(vec1.size() == vec2.size());
- unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_add");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inplace_add()!");
+
+
+ //unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_add");
- viennacl::ocl::enqueue(k(vec1, vec2, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)))
+ );
}
+
+
/** @brief Subtraction of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
*
* result = vec1 - vec2
@@ -76,17 +115,31 @@ namespace viennacl
* @param vec2 The second operand.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void sub(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename V2, typename V3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_vector<V3>::value
+ >::type
+ sub(const V1 & vec1,
+ const V2 & vec2,
+ V3 & result)
{
- assert(vec1.size() == vec2.size());
- result.resize(vec1.size());
- unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sub");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in sub()!");
+
+ //unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sub");
- viennacl::ocl::enqueue(k(vec1, vec2, result, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)) )
+ );
}
/** @brief Inplace addition of two vectors. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -96,15 +149,27 @@ namespace viennacl
* @param vec1 The result.
* @param vec2 The subtracted vector
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_sub(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2)
+ template <typename V1, typename V2>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ >::type
+ inplace_sub(V1 & vec1,
+ const V2 & vec2)
{
- assert(vec1.size() == vec2.size());
- unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_sub");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inplace_sub()!");
+
+ //unsigned int size = std::min(vec1.internal_size(), vec2.internal_size());
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_sub");
- viennacl::ocl::enqueue(k(vec1, vec2, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)))
+ );
}
@@ -117,15 +182,29 @@ namespace viennacl
* @param alpha The scaling factor.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void mult(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
- scalar<SCALARTYPE> const & alpha,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename S2, typename V3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ && viennacl::is_vector<V3>::value
+ >::type
+ mult(const V1 & vec,
+ S2 const & alpha,
+ V3 & result)
{
- result.resize(vec.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "mult");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in mult()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "mult");
- viennacl::ocl::enqueue(k(vec, alpha, result, static_cast<cl_uint>(vec.internal_size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ alpha,
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+ );
}
/** @brief Scales a vector. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -136,15 +215,29 @@ namespace viennacl
* @param alpha The scaling factor.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void mult(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
- SCALARTYPE alpha,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename SCALARTYPE, typename V3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_cpu_scalar<SCALARTYPE>::value
+ && viennacl::is_vector<V3>::value
+ >::type
+ mult(V1 const & vec,
+ SCALARTYPE alpha,
+ V3 & result)
{
- result.resize(vec.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_mult");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in mult()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_mult");
- viennacl::ocl::enqueue(k(vec, alpha, result, static_cast<cl_uint>(vec.internal_size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ static_cast<value_type>(alpha),
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+ );
}
/** @brief Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -154,13 +247,23 @@ namespace viennacl
* @param vec The vector to be scaled.
* @param alpha The scaling factor.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_mult(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
- scalar<SCALARTYPE> const & alpha)
+ template <typename V1, typename S2>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ >::type
+ inplace_mult(V1 & vec,
+ S2 const & alpha)
{
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_mult");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_mult");
- viennacl::ocl::enqueue(k(vec, alpha, static_cast<cl_uint>(vec.internal_size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ alpha)
+ );
}
/** @brief Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -170,13 +273,23 @@ namespace viennacl
* @param vec The vector to be scaled.
* @param alpha The scaling factor.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_mult(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
- SCALARTYPE alpha)
+ template <typename V1, typename S2>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_cpu_scalar<S2>::value
+ >::type
+ inplace_mult(V1 & vec,
+ S2 alpha)
{
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_inplace_mult");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_inplace_mult");
- viennacl::ocl::enqueue(k(vec, alpha, static_cast<cl_uint>(vec.internal_size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ static_cast<value_type>(alpha))
+ );
}
//result = vec / scalar
@@ -188,16 +301,29 @@ namespace viennacl
* @param alpha The (inverse) scaling factor.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void divide(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
- scalar<SCALARTYPE> const & alpha,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename S2, typename V3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ && viennacl::is_vector<V3>::value
+ >::type
+ divide(V1 const & vec,
+ S2 const & alpha,
+ V3 & result)
{
- assert(vec.size() == result.size());
- result.resize(vec.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "divide");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in divide()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "divide");
- viennacl::ocl::enqueue(k(vec, alpha, result, static_cast<cl_uint>(vec.internal_size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ alpha,
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+ );
}
/** @brief Scales a vector inplace. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -207,13 +333,23 @@ namespace viennacl
* @param vec The vector to be scaled.
* @param alpha The (inverse) scaling factor.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_divide(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec,
- scalar<SCALARTYPE> const & alpha)
+ template <typename V1, typename S2>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ >::type
+ inplace_divide(V1 & vec,
+ S2 const & alpha)
{
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_divide");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_divide");
- viennacl::ocl::enqueue(k(vec, alpha, static_cast<cl_uint>(vec.internal_size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ alpha)
+ );
}
//result = factor * vec1 + vec2
@@ -226,17 +362,35 @@ namespace viennacl
* @param vec2 The second added.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void mul_add(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- scalar<SCALARTYPE> const & alpha,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename S2, typename V3, typename V4>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ && viennacl::is_vector<V3>::value
+ && viennacl::is_vector<V4>::value
+ >::type
+ mul_add(V1 const & vec1,
+ S2 const & alpha,
+ V3 const & vec2,
+ V4 & result)
{
- assert(vec1.size() == vec2.size() && result.size() == vec1.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "mul_add");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-
- viennacl::ocl::enqueue(k(vec1, alpha, vec2, result, size));
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in mul_add()!");
+
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "mul_add");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ alpha,
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+ );
}
/** @brief Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -248,17 +402,34 @@ namespace viennacl
* @param vec2 The second added.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void mul_add(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- SCALARTYPE alpha,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename SCALARTYPE, typename V3, typename V4>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_cpu_scalar<SCALARTYPE>::value
+ && viennacl::is_vector<V3>::value
+ && viennacl::is_vector<V4>::value
+ >::type
+ mul_add(V1 const & vec1,
+ SCALARTYPE alpha,
+ V3 const & vec2,
+ V4 & result)
{
- assert(vec1.size() == vec2.size() && result.size() == vec1.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_mul_add");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-
- viennacl::ocl::enqueue(k(vec1, alpha, vec2, result, size));
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in mul_add()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_mul_add");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ static_cast<value_type>(alpha),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+ );
}
//vec1 += factor * vec2
@@ -270,16 +441,30 @@ namespace viennacl
* @param alpha The scaling factor for the first addend.
* @param vec2 The second added.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_mul_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- scalar<SCALARTYPE> const & alpha)
+ template <typename V1, typename V2, typename S3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_scalar<S3>::value
+ >::type
+ inplace_mul_add(V1 & vec1,
+ V2 const & vec2,
+ S3 const & alpha)
{
- assert(vec1.size() == vec2.size());
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_mul_add");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inplace_mul_add()!");
+
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_mul_add");
- viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ alpha));
}
/** @brief Inplace Multiply-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -290,16 +475,29 @@ namespace viennacl
* @param vec2 The second added.
* @param alpha The scaling factor for the first addend.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_mul_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- SCALARTYPE alpha)
+ template <typename V1, typename V2, typename SCALARTYPE>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_cpu_scalar<SCALARTYPE>::value
+ >::type
+ inplace_mul_add(V1 & vec1,
+ V2 const & vec2,
+ SCALARTYPE alpha)
{
- assert(vec1.size() == vec2.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "cpu_inplace_mul_add");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inplace_mul_add()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "cpu_inplace_mul_add");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
- viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ value_type(alpha)));
}
/** @brief Multiply-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -311,17 +509,34 @@ namespace viennacl
* @param vec2 The second operand.
* @param result The result vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void mul_sub(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- scalar<SCALARTYPE> const & alpha,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- viennacl::vector<SCALARTYPE, ALIGNMENT> & result)
+ template <typename V1, typename S2, typename V3, typename V4>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+ && viennacl::is_vector<V3>::value
+ && viennacl::is_vector<V4>::value
+ >::type
+ mul_sub(V1 const & vec1,
+ S2 const & alpha,
+ V3 const & vec2,
+ V4 & result)
{
- assert(vec1.size() == vec2.size() && result.size() == vec1.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "mul_sub");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
-
- viennacl::ocl::enqueue(k(vec1, alpha, vec2, result, size));
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && (viennacl::traits::size(vec1) == viennacl::traits::size(result))
+ && "Incompatible vector sizes in mul_sub()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "mul_sub");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ alpha,
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ viennacl::traits::handle(result), cl_uint(viennacl::traits::start(result)), cl_uint(viennacl::traits::size(result)))
+ );
}
@@ -333,16 +548,30 @@ namespace viennacl
* @param vec2 The second operand.
* @param alpha The scaling factor for the vector update.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_mul_sub(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- scalar<SCALARTYPE> const & alpha)
+ template <typename V1, typename V2, typename S3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_scalar<S3>::value
+ >::type
+ inplace_mul_sub(V1 & vec1,
+ V2 const & vec2,
+ S3 const & alpha)
{
- assert(vec1.size() == vec2.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_mul_sub");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inplace_mul_sub()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_mul_sub");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
- viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ alpha)
+ );
}
/** @brief Inplace divide-add operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -353,16 +582,30 @@ namespace viennacl
* @param vec2 The vector update
* @param alpha The scaling factor for the second vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_div_add(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- scalar<SCALARTYPE> const & alpha)
+ template <typename V1, typename V2, typename S3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_scalar<S3>::value
+ >::type
+ inplace_div_add(V1 & vec1,
+ V2 const & vec2,
+ S3 const & alpha)
{
- assert(vec1.size() == vec2.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_div_add");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inplace_div_add()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_div_add");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
- viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ alpha)
+ );
}
/** @brief Inplace divide-subtract operation. Try to use the overloaded operators for vector instead, unless you want to fine-tune the number of GPU threads involved.
@@ -373,16 +616,30 @@ namespace viennacl
* @param vec2 The vector update
* @param alpha The scaling factor for the second vector.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inplace_div_sub(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- scalar<SCALARTYPE> const & alpha)
+ template <typename V1, typename V2, typename S3>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_scalar<S3>::value
+ >::type
+ inplace_div_sub(V1 & vec1,
+ V2 const & vec2,
+ S3 const & alpha)
{
- assert(vec1.size() == vec2.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inplace_div_sub");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inplace_div_sub()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inplace_div_sub");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
- viennacl::ocl::enqueue(k(vec1, vec2, alpha, size));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ alpha)
+ );
}
@@ -391,53 +648,66 @@ namespace viennacl
//implementation of inner product:
//namespace {
- /** @brief Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2).
- *
- * @param vec1 The first vector
- * @param vec2 The second vector
- * @param result The result scalar (on the gpu)
- */
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- scalar<SCALARTYPE> & result)
- {
- assert(vec1.size() == vec2.size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "inner_prod");
- cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
- unsigned int work_groups = k.global_work_size() / k.local_work_size();
- static viennacl::vector<SCALARTYPE> temp(work_groups);
-
- /*unsigned int pos = 0;
- k.argument(pos++, vec1.handle());
- k.argument(pos++, vec2.handle());
- k.argument(pos++, size);
- k.local_buffer(pos++, static_cast<unsigned int>(sizeof(SCALARTYPE) * k.local_work_size()));
- k.argument(pos++, temp.handle());*/
-
- //Note: Number of work groups MUST be a power of two!
- //std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
- assert( work_groups * k.local_work_size() == k.global_work_size() );
- assert( (k.global_work_size() / k.local_work_size()) == 1
- || (k.global_work_size() / k.local_work_size()) == 2
- || (k.global_work_size() / k.local_work_size()) == 4
- || (k.global_work_size() / k.local_work_size()) == 8
- || (k.global_work_size() / k.local_work_size()) == 16
- || (k.global_work_size() / k.local_work_size()) == 32
- || (k.global_work_size() / k.local_work_size()) == 64
- || (k.global_work_size() / k.local_work_size()) == 128
- || (k.global_work_size() / k.local_work_size()) == 256
- || (k.global_work_size() / k.local_work_size()) == 512 );
-
- viennacl::ocl::enqueue(k(vec1, vec2, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));
-
- viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sum");
-
- ksum.local_work_size(0, work_groups);
- ksum.global_work_size(0, work_groups);
- viennacl::ocl::enqueue(ksum(temp, result));
- }
- //}
+ /** @brief Computes the inner product of two vectors - implementation. Library users should call inner_prod(vec1, vec2).
+ *
+ * @param vec1 The first vector
+ * @param vec2 The second vector
+ * @param result The result scalar (on the gpu)
+ */
+ template <typename V1, typename V2, typename S3>
+ void inner_prod_impl(V1 const & vec1,
+ V2 const & vec2,
+ S3 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_scalar<S3>::value
+#ifdef _MSC_VER
+ >::type * dummy = 0)
+#else
+ >::type * dummy)
+#endif
+ {
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert( (viennacl::traits::size(vec1) == viennacl::traits::size(vec2))
+ && "Incompatible vector sizes in inner_prod_impl()!");
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "inner_prod");
+ //cl_uint size = static_cast<cl_uint>(std::min(vec1.internal_size(), vec2.internal_size()));
+ unsigned int work_groups = k.global_work_size() / k.local_work_size();
+
+ static viennacl::vector<value_type> temp(work_groups);
+
+ //Note: Number of work groups MUST be a power of two!
+ //std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
+ assert( work_groups * k.local_work_size() == k.global_work_size() );
+ assert( (k.global_work_size() / k.local_work_size()) == 1
+ || (k.global_work_size() / k.local_work_size()) == 2
+ || (k.global_work_size() / k.local_work_size()) == 4
+ || (k.global_work_size() / k.local_work_size()) == 8
+ || (k.global_work_size() / k.local_work_size()) == 16
+ || (k.global_work_size() / k.local_work_size()) == 32
+ || (k.global_work_size() / k.local_work_size()) == 64
+ || (k.global_work_size() / k.local_work_size()) == 128
+ || (k.global_work_size() / k.local_work_size()) == 256
+ || (k.global_work_size() / k.local_work_size()) == 512 );
+
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+ temp));
+
+ viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sum");
+
+ ksum.local_work_size(0, work_groups);
+ ksum.global_work_size(0, work_groups);
+ viennacl::ocl::enqueue(ksum(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+ result)
+ );
+ }
//public interface of inner product
/** @brief Computes the inner product of two vectors.
@@ -446,15 +716,18 @@ namespace viennacl
* @param vec2 The second vector
* @return The result
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT1, unsigned int ALIGNMENT2>
- viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1>,
- const viennacl::vector<SCALARTYPE, ALIGNMENT2>,
- viennacl::op_inner_prod >
- inner_prod_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT1> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT2> & vec2)
+ template <typename V1, typename V2>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value,
+ viennacl::scalar_expression< const V1,
+ const V2,
+ viennacl::op_inner_prod >
+ >::type
+ inner_prod_impl(V1 const & vec1,
+ V2 const & vec2)
{
- return viennacl::scalar_expression< const viennacl::vector<SCALARTYPE, ALIGNMENT1>,
- const viennacl::vector<SCALARTYPE, ALIGNMENT2>,
+ return viennacl::scalar_expression< const V1,
+ const V2,
viennacl::op_inner_prod >(vec1, vec2);
}
@@ -462,15 +735,27 @@ namespace viennacl
/** @brief Computes the l^1-norm of a vector
*
- * @param vcl_vec The vector
+ * @param vec The vector
* @param result The result scalar
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void norm_1_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
- scalar<SCALARTYPE> & result)
+ template <typename V1, typename S2>
+ void norm_1_impl(V1 const & vec,
+ S2 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+#ifdef _MSC_VER
+ >::type * dummy = 0)
+#else
+ >::type * dummy)
+#endif
{
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "norm_1");
- cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "norm_1");
+ //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
if (k.local_work_size() != k.global_work_size())
{
@@ -479,10 +764,9 @@ namespace viennacl
k.global_work_size(0, viennacl::ocl::current_device().max_work_group_size());
}
-
unsigned int work_groups = k.global_work_size() / k.local_work_size();
- viennacl::vector<SCALARTYPE> temp(work_groups);
-
+ viennacl::vector<value_type> temp(work_groups);
+
//Note: Number of work groups MUST be a power of two!
//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
assert( work_groups * k.local_work_size() == k.global_work_size() );
@@ -497,26 +781,42 @@ namespace viennacl
|| (k.global_work_size() / k.local_work_size()) == 256
|| (k.global_work_size() / k.local_work_size()) == 512 );
- viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));
-
- viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sum");
-
- ksum.local_work_size(0, work_groups);
- ksum.global_work_size(0, work_groups);
- viennacl::ocl::enqueue(ksum(temp, result));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+ temp));
+
+ viennacl::ocl::kernel & ksum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sum");
+
+ ksum.local_work_size(0, work_groups);
+ ksum.global_work_size(0, work_groups);
+ viennacl::ocl::enqueue(ksum(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+ result)
+ );
}
/** @brief Computes the l^2-norm of a vector - implementation
*
- * @param vcl_vec The vector
+ * @param vec The vector
* @param result The result scalar
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void norm_2_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
- scalar<SCALARTYPE> & result)
+ template <typename V1, typename S2>
+ void norm_2_impl(V1 const & vec,
+ S2 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+#ifdef _MSC_VER
+ >::type * dummy = 0)
+#else
+ >::type * dummy)
+#endif
{
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "norm_2");
- cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "norm_2");
+ //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
if (k.local_work_size() != k.global_work_size())
{
@@ -526,7 +826,7 @@ namespace viennacl
}
unsigned int work_groups = k.global_work_size() / k.local_work_size();
- viennacl::vector<SCALARTYPE> temp(work_groups);
+ viennacl::vector<value_type> temp(work_groups);
//Note: Number of work groups MUST be a power of two!
//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
@@ -542,26 +842,44 @@ namespace viennacl
|| (k.global_work_size() / k.local_work_size()) == 256
|| (k.global_work_size() / k.local_work_size()) == 512 );
- viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+ temp)
+ );
- viennacl::ocl::kernel & sqrt_sum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "sqrt_sum");
+ viennacl::ocl::kernel & sqrt_sum = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "sqrt_sum");
sqrt_sum.local_work_size(0, work_groups);
sqrt_sum.global_work_size(0, work_groups);
- viennacl::ocl::enqueue(sqrt_sum(temp, result, work_groups));
+ viennacl::ocl::enqueue(
+ sqrt_sum(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+ result)
+ );
}
/** @brief Computes the supremum-norm of a vector
*
- * @param vcl_vec The vector
+ * @param vec The vector
* @param result The result scalar
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void norm_inf_impl(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec,
- scalar<SCALARTYPE> & result)
+ template <typename V1, typename S2>
+ void norm_inf_impl(V1 const & vec,
+ S2 & result,
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_scalar<S2>::value
+#ifdef _MSC_VER
+ >::type * dummy = 0)
+#else
+ >::type * dummy)
+#endif
{
- cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "norm_inf");
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "norm_inf");
if (k.local_work_size() != k.global_work_size())
{
@@ -571,7 +889,7 @@ namespace viennacl
}
unsigned int work_groups = k.global_work_size() / k.local_work_size();
- viennacl::vector<SCALARTYPE> temp(work_groups);
+ viennacl::vector<value_type> temp(work_groups);
//Note: Number of work groups MUST be a power of two!
//std::cout << work_groups << ", " << k.local_work_size() << ", " << k.global_work_size() << std::endl;
@@ -587,15 +905,20 @@ namespace viennacl
|| work_groups == 256
|| work_groups == 512 );
- viennacl::ocl::enqueue(k(vcl_vec, size, viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()), temp));
- //viennacl::ocl::get_queue().finish();
-
- //part 2: parallel reduction of reduced kernel:
- viennacl::ocl::kernel & max_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "vmax");
- max_kernel.local_work_size(0, work_groups);
- max_kernel.global_work_size(0, work_groups);
-
- viennacl::ocl::enqueue(max_kernel(temp, result, work_groups));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
+ temp));
+ //viennacl::ocl::get_queue().finish();
+
+ //part 2: parallel reduction of reduced kernel:
+ viennacl::ocl::kernel & max_kernel = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "vmax");
+ max_kernel.local_work_size(0, work_groups);
+ max_kernel.global_work_size(0, work_groups);
+
+ viennacl::ocl::enqueue(
+ max_kernel(viennacl::traits::handle(temp), cl_uint(viennacl::traits::start(temp)), cl_uint(viennacl::traits::size(temp)),
+ result)
+ );
}
//This function should return a CPU scalar, otherwise statements like
@@ -603,21 +926,28 @@ namespace viennacl
// are ambiguous
/** @brief Computes the index of the first entry that is equal to the supremum-norm in modulus.
*
- * @param vcl_vec The vector
+ * @param vec The vector
* @return The result. Note that the result must be a CPU scalar (unsigned int), since gpu scalars are floating point types.
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- cl_uint index_norm_inf(const viennacl::vector<SCALARTYPE, ALIGNMENT> & vcl_vec)
+ template <typename V1>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value,
+ cl_uint
+ >::type
+ index_norm_inf(V1 const & vec)
{
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
viennacl::ocl::handle<cl_mem> h = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(cl_uint));
- viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "index_norm_inf");
- cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
+ viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<value_type, ALIGNMENT>::program_name(), "index_norm_inf");
+ //cl_uint size = static_cast<cl_uint>(vcl_vec.internal_size());
k.global_work_size(0, k.local_work_size());
- viennacl::ocl::enqueue(k(vcl_vec,
- size,
- viennacl::ocl::local_mem(sizeof(SCALARTYPE) * k.local_work_size()),
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec), cl_uint(viennacl::traits::start(vec)), cl_uint(viennacl::traits::size(vec)),
+ viennacl::ocl::local_mem(sizeof(value_type) * k.local_work_size()),
viennacl::ocl::local_mem(sizeof(cl_uint) * k.local_work_size()), h));
//read value:
@@ -638,16 +968,29 @@ namespace viennacl
* @param alpha The first transformation coefficient
* @param beta The second transformation coefficient
*/
- template<class SCALARTYPE, unsigned int ALIGNMENT>
- void plane_rotation(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
- const viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2,
- SCALARTYPE alpha,
- SCALARTYPE beta)
+ template <typename V1, typename V2, typename SCALARTYPE>
+ typename viennacl::enable_if< viennacl::is_vector<V1>::value
+ && viennacl::is_vector<V2>::value
+ && viennacl::is_cpu_scalar<SCALARTYPE>::value
+ >::type
+ plane_rotation(V1 & vec1,
+ V2 & vec2,
+ SCALARTYPE alpha,
+ SCALARTYPE beta)
{
- assert(vec1.size() == vec2.size());
+ typedef typename viennacl::result_of::cpu_value_type<V1>::type value_type;
+
+ //TODO: Ensure that correct alignment is chosen for the kernels.
+ const unsigned int ALIGNMENT = V1::alignment;
+
+ assert(viennacl::traits::size(vec1) == viennacl::traits::size(vec2));
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "plane_rotation");
- viennacl::ocl::enqueue(k(vec1, vec2, alpha, beta, static_cast<cl_uint>(vec1.size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)),
+ alpha,
+ beta)
+ );
}
} //namespace linalg
diff --git a/viennacl/matrix.hpp b/viennacl/matrix.hpp
index 75c33e7..10194eb 100644
--- a/viennacl/matrix.hpp
+++ b/viennacl/matrix.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_MATRIX_HPP_
-#define _VIENNACL_MATRIX_HPP_
+#ifndef VIENNACL_MATRIX_HPP_
+#define VIENNACL_MATRIX_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file matrix.hpp
@brief Implementation of the dense matrix class
@@ -27,6 +29,7 @@
#include "viennacl/tools/tools.hpp"
#include "viennacl/tools/matrix_size_deducer.hpp"
#include "viennacl/tools/matrix_kernel_class_deducer.hpp"
+#include "viennacl/meta/result_of.hpp"
namespace viennacl
{
@@ -40,19 +43,19 @@ namespace viennacl
* @param num_rows number of entries per row (including alignment)
* @param num_cols number of entries per column (including alignment)
*/
- static unsigned int mem_index(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)
+ static vcl_size_t mem_index(vcl_size_t i, vcl_size_t j, vcl_size_t num_rows, vcl_size_t num_cols)
{
return i * num_cols + j;
}
- static unsigned int internal_size1(unsigned int rows, unsigned int alignment)
+ static vcl_size_t internal_size1(vcl_size_t rows, vcl_size_t alignment)
{
- return viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);;
+ return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(rows, alignment);;
}
- static unsigned int internal_size2(unsigned int cols, unsigned int alignment)
+ static vcl_size_t internal_size2(vcl_size_t cols, vcl_size_t alignment)
{
- return viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
+ return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(cols, alignment);
}
};
@@ -65,26 +68,27 @@ namespace viennacl
* @param num_rows number of entries per row (including alignment)
* @param num_cols number of entries per column (including alignment)
*/
- static unsigned int mem_index(unsigned int i, unsigned int j, unsigned int num_rows, unsigned int num_cols)
+ static vcl_size_t mem_index(vcl_size_t i, vcl_size_t j, vcl_size_t num_rows, vcl_size_t num_cols)
{
return i + j * num_rows;
}
- static unsigned int internal_size1(unsigned int rows, unsigned int alignment)
+ static vcl_size_t internal_size1(vcl_size_t rows, vcl_size_t alignment)
{
- return viennacl::tools::roundUpToNextMultiple<unsigned int>(rows, alignment);
+ return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(rows, alignment);
}
- static unsigned int internal_size2(unsigned int cols, unsigned int alignment)
+ static vcl_size_t internal_size2(vcl_size_t cols, vcl_size_t alignment)
{
- return viennacl::tools::roundUpToNextMultiple<unsigned int>(cols, alignment);
+ return viennacl::tools::roundUpToNextMultiple<vcl_size_t>(cols, alignment);
}
};
-
template <typename LHS, typename RHS, typename OP>
class matrix_expression
{
+
+
public:
///** @brief Extracts the vector type from the two operands.
//*/
@@ -100,14 +104,14 @@ namespace viennacl
RHS & rhs() const { return _rhs; }
/** @brief Returns the size of the result vector */
- unsigned int size1() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size1(_lhs, _rhs); }
- unsigned int size2() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size2(_lhs, _rhs); }
+ std::size_t size1() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size1(_lhs, _rhs); }
+ std::size_t size2() const { return viennacl::tools::MATRIX_SIZE_DEDUCER<LHS, RHS, OP>::size2(_lhs, _rhs); }
private:
/** @brief The left hand side operand */
- LHS & _lhs;
+ typename result_of::matrix_expression_internal_storage<LHS>::type _lhs;
/** @brief The right hand side operand */
- RHS & _rhs;
+ typename result_of::matrix_expression_internal_storage<RHS>::type _rhs;
};
@@ -125,24 +129,26 @@ namespace viennacl
public:
typedef typename MATRIXTYPE::value_type value_type;
- matrix_iterator(MATRIXTYPE & mat, unsigned int start_row, unsigned int start_col) : _mat(mat), _row(start_row), _col(start_col) {};
+ matrix_iterator(MATRIXTYPE & mat,
+ std::size_t start_row,
+ std::size_t start_col) : mat_(mat), row_(start_row), col_(start_col) {};
- value_type operator*(void) { return _mat(_row, _col); }
- self_type & operator++(void) { viennacl::tools::MATRIX_ITERATOR_INCREMENTER<ROWCOL, MATRIXTYPE>::apply(_mat, _row, _col); return *this; }
+ value_type operator*(void) { return mat_(row_, col_); }
+ self_type & operator++(void) { viennacl::tools::MATRIX_ITERATOR_INCREMENTER<ROWCOL, MATRIXTYPE>::apply(mat_, row_, col_); return *this; }
self_type & operator++(int) { self_type tmp = *this; ++(*this); return tmp; }
- bool operator==(self_type const & other) { return (_row == other._row) && (_col == other._col); }
+ bool operator==(self_type const & other) { return (row_ == other.row_) && (col_ == other.col_); }
bool operator!=(self_type const & other) { return !(*this == other); }
- unsigned int index1() { return _row; }
- unsigned int index2() { return _col; }
+ vcl_size_t index1() { return row_; }
+ vcl_size_t index2() { return col_; }
- MATRIXTYPE & operator()(void) const { return _mat; }
+ MATRIXTYPE & operator()(void) const { return mat_; }
private:
- MATRIXTYPE & _mat;
- unsigned int _row;
- unsigned int _col;
+ MATRIXTYPE & mat_;
+ vcl_size_t row_;
+ vcl_size_t col_;
};
/** @brief A dense matrix class
@@ -160,9 +166,10 @@ namespace viennacl
typedef matrix_iterator<row_iteration, matrix<SCALARTYPE, F, ALIGNMENT> > iterator1;
typedef matrix_iterator<col_iteration, matrix<SCALARTYPE, F, ALIGNMENT> > iterator2;
typedef scalar<typename viennacl::tools::CHECK_SCALAR_TEMPLATE_ARGUMENT<SCALARTYPE>::ResultType> value_type;
+ typedef vcl_size_t size_type;
/** @brief The default constructor. Does not allocate any memory. */
- matrix() : _rows(0), _columns(0)
+ matrix() : rows_(0), columns_(0)
{
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
KernelClass::init();
@@ -173,29 +180,29 @@ namespace viennacl
* @param rows Number of rows
* @param columns Number of columns
*/
- explicit matrix(unsigned int rows, unsigned int columns) :
- _rows(rows), _columns(columns)
+ explicit matrix(size_type rows, size_type columns) :
+ rows_(rows), columns_(columns)
{
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
KernelClass::init();
- _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
+ elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
}
- explicit matrix(cl_mem mem, unsigned int rows, unsigned int columns) :
- _rows(rows), _columns(columns)
+ explicit matrix(cl_mem mem, size_type rows, size_type columns) :
+ rows_(rows), columns_(columns)
{
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
KernelClass::init();
- _elements = mem;
- _elements.inc(); //prevents that the user-provided memory is deleted once the matrix object is destroyed.
+ elements_ = mem;
+ elements_.inc(); //prevents that the user-provided memory is deleted once the matrix object is destroyed.
}
template <typename LHS, typename RHS, typename OP>
- matrix(matrix_expression< LHS, RHS, OP> const & proxy) : _rows(proxy.size1()), _columns(proxy.size2())
+ matrix(matrix_expression< LHS, RHS, OP> const & proxy) : rows_(proxy.size1()), columns_(proxy.size2())
{
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
KernelClass::init();
- _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
+ elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size());
*this = proxy;
}
@@ -203,8 +210,8 @@ namespace viennacl
//copy constructor:
matrix(const matrix<SCALARTYPE, F, ALIGNMENT> & mat) :
- _rows(mat.size1()), _columns(mat.size2()),
- _elements(viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size()))
+ rows_(mat.size1()), columns_(mat.size2()),
+ elements_(viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, sizeof(SCALARTYPE)*internal_size()))
{
cl_int err;
err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(), mat.handle(), handle(), 0, 0, sizeof(SCALARTYPE)*internal_size(), 0, NULL, NULL);
@@ -248,8 +255,8 @@ namespace viennacl
std::vector<SCALARTYPE> temp_trans(internal_size());
- for (size_t i=0; i<proxy.lhs().size1(); ++i)
- for (size_t j=0; j<proxy.lhs().size2(); ++j)
+ for (vcl_size_t i=0; i<proxy.lhs().size1(); ++i)
+ for (vcl_size_t j=0; j<proxy.lhs().size2(); ++j)
temp_trans[F::mem_index(j,i, internal_size1(), internal_size2())]
= temp[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())];
@@ -260,7 +267,7 @@ namespace viennacl
std::cout << temp_trans[F::mem_index(i,j, proxy.lhs().internal_size1(), proxy.lhs().internal_size2())] << ", ";
}*/
- _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
sizeof(SCALARTYPE)*internal_size(),
&(temp_trans[0]));
@@ -276,7 +283,7 @@ namespace viennacl
* @param columns New number of columns
* @param preserve If true, existing values are preserved.
*/
- void resize(unsigned int rows, unsigned int columns, bool preserve = true)
+ void resize(size_type rows, size_type columns, bool preserve = true)
{
assert(rows > 0 && columns > 0);
if (preserve)
@@ -294,14 +301,14 @@ namespace viennacl
//set up entries of new matrix:
std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
- for (unsigned int i=0; i<rows; ++i)
+ for (size_type i=0; i<rows; ++i)
{
- if (i >= _rows)
+ if (i >= rows_)
continue;
- for (unsigned int j=0; j<columns; ++j)
+ for (size_type j=0; j<columns; ++j)
{
- if (j >= _columns)
+ if (j >= columns_)
continue;
new_entries[F::mem_index(i, j, F::internal_size1(rows, ALIGNMENT), F::internal_size2(columns, ALIGNMENT))]
= old_entries[F::mem_index(i, j, internal_size1(), internal_size2())];
@@ -309,17 +316,17 @@ namespace viennacl
}
//copy new entries to GPU:
- _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
- _rows = rows;
- _columns = columns;
+ elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
+ rows_ = rows;
+ columns_ = columns;
}
else //discard old entries:
{
- _rows = rows;
- _columns = columns;
+ rows_ = rows;
+ columns_ = columns;
std::vector< SCALARTYPE > new_entries(F::internal_size1(rows, ALIGNMENT) * F::internal_size2(columns, ALIGNMENT));
- _elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
+ elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, new_entries);
}
}
@@ -327,19 +334,19 @@ namespace viennacl
//read-write access to an element of the vector
/** @brief Read-write access to a single element of the vector
*/
- entry_proxy<SCALARTYPE> operator()(unsigned int row_index, unsigned int col_index)
+ entry_proxy<SCALARTYPE> operator()(size_type row_index, size_type col_index)
{
- return entry_proxy<SCALARTYPE>(F::mem_index(row_index, col_index, internal_size1(), internal_size2()), _elements);
+ return entry_proxy<SCALARTYPE>(F::mem_index(row_index, col_index, internal_size1(), internal_size2()), elements_);
}
/** @brief Read access to a single element of the vector
*/
- scalar<SCALARTYPE> operator()(unsigned int row_index, unsigned int col_index) const
+ scalar<SCALARTYPE> operator()(size_type row_index, size_type col_index) const
{
scalar<SCALARTYPE> tmp;
cl_int err;
err = clEnqueueCopyBuffer(viennacl::ocl::get_queue().handle(),
- _elements,
+ elements_,
tmp.handle(),
sizeof(SCALARTYPE) * F::mem_index(row_index, col_index, internal_size1(), internal_size2()),
0,
@@ -370,6 +377,12 @@ namespace viennacl
return *this;
}
+ matrix<SCALARTYPE, F, ALIGNMENT> & operator += (const matrix_range< matrix<SCALARTYPE, F, ALIGNMENT> > & other)
+ {
+ viennacl::linalg::inplace_add(*this, other);
+ return *this;
+ }
+
matrix_expression< const matrix<SCALARTYPE, F, ALIGNMENT>,
const matrix<SCALARTYPE, F, ALIGNMENT>,
op_sub >
@@ -482,32 +495,32 @@ namespace viennacl
/** @brief Returns the number of rows */
- const unsigned int & size1() const { return _rows;}
+ const size_type & size1() const { return rows_;}
/** @brief Returns the number of columns */
- const unsigned int & size2() const { return _columns; }
+ const size_type & size2() const { return columns_; }
/** @brief Resets all entries to zero */
void clear()
{
- unsigned int internal_size = internal_size1() * internal_size2();
+ std::size_t internal_size = internal_size1() * internal_size2();
typedef typename viennacl::tools::MATRIX_KERNEL_CLASS_DEDUCER< matrix<SCALARTYPE, F, ALIGNMENT> >::ResultType KernelClass;
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(KernelClass::program_name(), "clear");
- viennacl::ocl::enqueue(k(_elements, internal_size));
+ viennacl::ocl::enqueue(k(elements_, static_cast<cl_uint>(internal_size)));
}
//const unsigned int row_stride() const { return roundUpToNextMultiple<unsigned int>(columns(), ALIGNMENT); }
/** @brief Returns the internal number of rows. Usually required for launching OpenCL kernels only */
- const unsigned int internal_size1() const { return F::internal_size1(size1(), ALIGNMENT); }
+ const size_type internal_size1() const { return F::internal_size1(size1(), ALIGNMENT); }
/** @brief Returns the internal number of columns. Usually required for launching OpenCL kernels only */
- const unsigned int internal_size2() const { return F::internal_size2(size2(), ALIGNMENT); }
+ const size_type internal_size2() const { return F::internal_size2(size2(), ALIGNMENT); }
/** @brief Returns the total amount of allocated memory in multiples of sizeof(SCALARTYPE) */
- const unsigned int internal_size() const { return internal_size1() * internal_size2(); }
+ const size_type internal_size() const { return internal_size1() * internal_size2(); }
/** @brief Returns the OpenCL handle */
- const viennacl::ocl::handle<cl_mem> & handle() const { return _elements; }
+ const viennacl::ocl::handle<cl_mem> & handle() const { return elements_; }
#if defined(_MSC_VER) && _MSC_VER < 1500 //Visual Studio 2005 needs special treatment
template <typename CPU_MATRIX>
@@ -568,9 +581,9 @@ namespace viennacl
#endif
private:
- unsigned int _rows;
- unsigned int _columns;
- viennacl::ocl::handle<cl_mem> _elements;
+ size_type rows_;
+ size_type columns_;
+ viennacl::ocl::handle<cl_mem> elements_;
}; //matrix
/** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
@@ -581,6 +594,8 @@ namespace viennacl
template<class SCALARTYPE, typename F, unsigned int ALIGNMENT>
std::ostream & operator<<(std::ostream & s, const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
{
+ typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type size_type;
+
std::vector<SCALARTYPE> tmp(gpu_matrix.internal_size());
cl_int err;
err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(), gpu_matrix.handle(), CL_TRUE, 0, sizeof(SCALARTYPE) * gpu_matrix.internal_size(), &tmp[0], 0, NULL, NULL);
@@ -590,12 +605,12 @@ namespace viennacl
s << "[" << gpu_matrix.size1() << "," << gpu_matrix.size2() << "]";
s << "(";
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
{
s << "(";
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
{
- s << tmp[ i * gpu_matrix.internal_size2() + j ];
+ s << tmp[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())];
if (j < gpu_matrix.size2() - 1)
s << ",";
}
@@ -610,7 +625,7 @@ namespace viennacl
/** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
*
* @param s STL output stream
- * @param gpu_matrix A dense ViennaCL matrix
+ * @param expr A matrix expression
*/
template<typename LHS, typename RHS, typename OP>
std::ostream & operator<<(std::ostream & s, const matrix_expression<LHS, RHS, OP> & expr)
@@ -648,17 +663,31 @@ namespace viennacl
void copy(const CPU_MATRIX & cpu_matrix,
matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix )
{
- gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.size1()),
- static_cast<unsigned int>(cpu_matrix.size2()), false);
+ typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type size_type;
+
+ //std::cout << "Copying CPU_MATRIX!" << std::endl;
+ //std::cout << "Size at begin: " << gpu_matrix.size1() << ", " << gpu_matrix.size2() << std::endl;
+ if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+ {
+ gpu_matrix.resize(cpu_matrix.size1(),
+ cpu_matrix.size2(), false);
+ }
+ else
+ {
+ assert( (gpu_matrix.size1() == cpu_matrix.size1())
+ && (gpu_matrix.size2() == cpu_matrix.size2())
+ );
+ }
std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
{
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
}
- gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+ gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+ //std::cout << "Size at end: " << gpu_matrix.size1() << ", " << gpu_matrix.size2() << std::endl;
}
//
@@ -673,18 +702,29 @@ namespace viennacl
void copy(const std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix,
matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix )
{
- gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.size()),
- static_cast<unsigned int>(cpu_matrix[0].size()),
- false);
+ typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type size_type;
+
+ if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+ {
+ gpu_matrix.resize(cpu_matrix.size(),
+ cpu_matrix[0].size(),
+ false);
+ }
+ else
+ {
+ assert( (gpu_matrix.size1() == cpu_matrix.size())
+ && (gpu_matrix.size2() == cpu_matrix[0].size())
+ );
+ }
std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
{
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix[i][j];
}
- gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+ gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
}
@@ -702,7 +742,7 @@ namespace viennacl
SCALARTYPE * cpu_matrix_end,
matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
{
- gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
+ gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE,
sizeof(SCALARTYPE) * (cpu_matrix_end - cpu_matrix_begin),
cpu_matrix_begin);
}
@@ -718,18 +758,29 @@ namespace viennacl
void copy(const Eigen::MatrixXf & cpu_matrix,
matrix<float, F, ALIGNMENT> & gpu_matrix)
{
- gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
- static_cast<unsigned int>(cpu_matrix.cols()),
- false);
+ typedef typename matrix<float, F, ALIGNMENT>::size_type size_type;
+
+ if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+ {
+ gpu_matrix.resize(cpu_matrix.rows(),
+ cpu_matrix.cols(),
+ false);
+ }
+ else
+ {
+ assert( (gpu_matrix.size1() == static_cast<std::size_t>(cpu_matrix.rows()))
+ && (gpu_matrix.size2() == static_cast<std::size_t>(cpu_matrix.cols()))
+ );
+ }
std::vector<float> data(gpu_matrix.internal_size());
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
{
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
}
- gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+ gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
}
/** @brief Copies a dense Eigen matrix from the host (CPU) to the OpenCL device (GPU or multi-core CPU)
@@ -741,18 +792,29 @@ namespace viennacl
void copy(const Eigen::MatrixXd & cpu_matrix,
matrix<double, F, ALIGNMENT> & gpu_matrix)
{
- gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.rows()),
- static_cast<unsigned int>(cpu_matrix.cols()),
- false);
+ typedef typename matrix<double, F, ALIGNMENT>::size_type size_type;
+
+ if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+ {
+ gpu_matrix.resize(cpu_matrix.rows(),
+ cpu_matrix.cols(),
+ false);
+ }
+ else
+ {
+ assert( (gpu_matrix.size1() == static_cast<std::size_t>(cpu_matrix.rows()))
+ && (gpu_matrix.size2() == static_cast<std::size_t>(cpu_matrix.cols()))
+ );
+ }
std::vector<double> data(gpu_matrix.internal_size());
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
{
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix(i,j);
}
- gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+ gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
}
#endif
@@ -766,18 +828,29 @@ namespace viennacl
void copy(const mtl::dense2D<SCALARTYPE, T>& cpu_matrix,
matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix)
{
- gpu_matrix.resize(static_cast<unsigned int>(cpu_matrix.num_rows()),
- static_cast<unsigned int>(cpu_matrix.num_cols()),
- false);
+ typedef typename matrix<SCALARTYPE, F, ALIGNMENT>::size_type size_type;
+
+ if (gpu_matrix.size1() == 0 || gpu_matrix.size2() == 0)
+ {
+ gpu_matrix.resize(cpu_matrix.num_rows(),
+ cpu_matrix.num_cols(),
+ false);
+ }
+ else
+ {
+ assert( (gpu_matrix.size1() == cpu_matrix.num_rows())
+ && (gpu_matrix.size2() == cpu_matrix.num_cols())
+ );
+ }
std::vector<SCALARTYPE> data(gpu_matrix.internal_size());
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
{
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
data[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())] = cpu_matrix[i][j];
}
- gpu_matrix._elements = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
+ gpu_matrix.elements_ = viennacl::ocl::current_context().create_memory(CL_MEM_READ_WRITE, data);
}
#endif
@@ -796,6 +869,8 @@ namespace viennacl
void copy(const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix,
CPU_MATRIX & cpu_matrix )
{
+ typedef typename matrix<float, F, ALIGNMENT>::size_type size_type;
+
if ( (gpu_matrix.size1() > 0) && (gpu_matrix.size2() > 0) )
{
std::vector<SCALARTYPE> temp_buffer(gpu_matrix.internal_size());
@@ -803,8 +878,8 @@ namespace viennacl
VIENNACL_ERR_CHECK(err);
//now copy entries to cpu_matrix:
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
cpu_matrix(i,j) = temp_buffer[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())];
}
}
@@ -819,6 +894,8 @@ namespace viennacl
void copy(const matrix<SCALARTYPE, F, ALIGNMENT> & gpu_matrix,
std::vector< std::vector<SCALARTYPE, A1>, A2> & cpu_matrix)
{
+ typedef typename matrix<float, F, ALIGNMENT>::size_type size_type;
+
if ( (gpu_matrix.size1() > 0) && (gpu_matrix.size2() > 0)
&& (cpu_matrix.size() >= gpu_matrix.size1()) && (cpu_matrix[0].size() >= gpu_matrix.size2()))
{
@@ -827,8 +904,8 @@ namespace viennacl
VIENNACL_ERR_CHECK(err);
//now copy entries to cpu_matrix:
- for (unsigned int i = 0; i < gpu_matrix.size1(); ++i)
- for (unsigned int j = 0; j < gpu_matrix.size2(); ++j)
+ for (size_type i = 0; i < gpu_matrix.size1(); ++i)
+ for (size_type j = 0; j < gpu_matrix.size2(); ++j)
cpu_matrix[i][j] = temp_buffer[F::mem_index(i, j, gpu_matrix.internal_size1(), gpu_matrix.internal_size2())];
}
}
@@ -868,7 +945,7 @@ namespace viennacl
op_prod> operator*(const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
op_prod> & proxy,
- CPU_SCALAR val)
+ CPU_SCALAR const & val)
{
return viennacl::matrix_expression< const viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
const viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT>,
@@ -883,7 +960,7 @@ namespace viennacl
const viennacl::vector<SCALARTYPE, VA2>,
op_prod>,
const SCALARTYPE,
- op_prod> operator*(CPU_SCALAR val,
+ op_prod> operator*(CPU_SCALAR const & val,
viennacl::matrix_expression< const viennacl::vector<SCALARTYPE, VA1>,
const viennacl::vector<SCALARTYPE, VA2>,
op_prod> const & proxy)
diff --git a/viennacl/matrix_proxy.hpp b/viennacl/matrix_proxy.hpp
new file mode 100644
index 0000000..32354b8
--- /dev/null
+++ b/viennacl/matrix_proxy.hpp
@@ -0,0 +1,361 @@
+#ifndef VIENNACL_MATRIX_PROXY_HPP_
+#define VIENNACL_MATRIX_PROXY_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file matrix_proxy.hpp
+ @brief Proxy classes for matrices.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/range.hpp"
+#include "viennacl/matrix.hpp"
+#include "viennacl/linalg/matrix_operations.hpp"
+
+namespace viennacl
+{
+
+ template <typename MatrixType>
+ class matrix_range
+ {
+ public:
+ typedef typename MatrixType::value_type value_type;
+ typedef range::size_type size_type;
+ typedef range::difference_type difference_type;
+ typedef value_type reference;
+ typedef const value_type & const_reference;
+
+ matrix_range(MatrixType & A,
+ range const & row_range,
+ range const & col_range) : A_(A), row_range_(row_range), col_range_(col_range) {}
+
+ size_type start1() const { return row_range_.start(); }
+ size_type size1() const { return row_range_.size(); }
+
+ size_type start2() const { return col_range_.start(); }
+ size_type size2() const { return col_range_.size(); }
+
+ template <typename MatrixType1, typename MatrixType2>
+ matrix_range<MatrixType> & operator = (const matrix_expression< MatrixType1,
+ MatrixType2,
+ op_prod > & proxy)
+ {
+ viennacl::linalg::prod_impl(proxy.lhs(), proxy.rhs(), *this);
+ return *this;
+ }
+
+
+ matrix_range<MatrixType> & operator += (matrix_range<MatrixType> const & other)
+ {
+ viennacl::linalg::inplace_add(*this, other);
+ return *this;
+ }
+
+ template <typename MatrixType1, typename MatrixType2>
+ matrix_range<MatrixType> & operator += (const matrix_expression< MatrixType1,
+ MatrixType2,
+ op_prod > & proxy)
+ {
+ MatrixType1 temp = proxy;
+ viennacl::range r1(0, temp.size1());
+ viennacl::range r2(0, temp.size2());
+ viennacl::matrix_range<MatrixType> temp2(temp, r1, r2);
+ viennacl::linalg::inplace_add(*this, temp2);
+ return *this;
+ }
+
+ template <typename MatrixType1, typename MatrixType2>
+ matrix_range<MatrixType> & operator += (const matrix_expression< const matrix_range<MatrixType1>,
+ const matrix_range<MatrixType2>,
+ op_prod > & proxy)
+ {
+ MatrixType1 temp(proxy.size1(), proxy.size2());
+ viennacl::range r1(0, temp.size1());
+ viennacl::range r2(0, temp.size2());
+ viennacl::matrix_range<MatrixType> temp2(temp, r1, r2);
+ temp2 = proxy;
+ viennacl::linalg::inplace_add(*this, temp2);
+ return *this;
+ }
+
+ //const_reference operator()(size_type i, size_type j) const { return A_(start1() + i, start2() + i); }
+ //reference operator()(size_type i, size_type j) { return A_(start1() + i, start2() + i); }
+
+ MatrixType & get() { return A_; }
+ const MatrixType & get() const { return A_; }
+
+ private:
+ MatrixType & A_;
+ range row_range_;
+ range col_range_;
+ };
+
+
+ /** @brief Returns an expression template class representing a transposed matrix */
+ template <typename MatrixType>
+ matrix_expression< const matrix_range<MatrixType>,
+ const matrix_range<MatrixType>,
+ op_trans> trans(const matrix_range<MatrixType> & mat)
+ {
+ return matrix_expression< const matrix_range<MatrixType>,
+ const matrix_range<MatrixType>,
+ op_trans>(mat, mat);
+ }
+
+
+
+
+ /////////////////////////////////////////////////////////////
+ ///////////////////////// CPU to GPU ////////////////////////
+ /////////////////////////////////////////////////////////////
+
+ //row_major:
+ template <typename CPU_MATRIX, typename SCALARTYPE>
+ void copy(const CPU_MATRIX & cpu_matrix,
+ matrix_range<matrix<SCALARTYPE, row_major, 1> > & gpu_matrix_range )
+ {
+ assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+ && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+
+ if ( gpu_matrix_range.start2() != 0 || gpu_matrix_range.size2() != gpu_matrix_range.get().size2())
+ {
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size2());
+
+ //copy each stride separately:
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ {
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ entries[j] = cpu_matrix(i,j);
+
+ size_t start_offset = (gpu_matrix_range.start1() + i) * gpu_matrix_range.get().internal_size2() + gpu_matrix_range.start2();
+ size_t num_entries = gpu_matrix_range.size2();
+ cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Strided copy worked!" << std::endl;
+ }
+ }
+ else
+ {
+ //full block can be copied:
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+
+ //copy each stride separately:
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ entries[i*gpu_matrix_range.get().internal_size2() + j] = cpu_matrix(i,j);
+
+ size_t start_offset = gpu_matrix_range.start1() * gpu_matrix_range.get().internal_size2();
+ size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+ //std::cout << "start_offset: " << start_offset << std::endl;
+ cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Block copy worked!" << std::endl;
+ }
+ }
+
+ //column_major:
+ template <typename CPU_MATRIX, typename SCALARTYPE>
+ void copy(const CPU_MATRIX & cpu_matrix,
+ matrix_range<matrix<SCALARTYPE, column_major, 1> > & gpu_matrix_range )
+ {
+ assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+ && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+
+ if ( gpu_matrix_range.start1() != 0 || gpu_matrix_range.size1() != gpu_matrix_range.get().size1())
+ {
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size1());
+
+ //copy each stride separately:
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ {
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ entries[i] = cpu_matrix(i,j);
+
+ size_t start_offset = (gpu_matrix_range.start2() + j) * gpu_matrix_range.get().internal_size1() + gpu_matrix_range.start1();
+ size_t num_entries = gpu_matrix_range.size1();
+ cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Strided copy worked!" << std::endl;
+ }
+ }
+ else
+ {
+ //full block can be copied:
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+
+ //copy each stride separately:
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ entries[i + j*gpu_matrix_range.get().internal_size1()] = cpu_matrix(i,j);
+
+ size_t start_offset = gpu_matrix_range.start2() * gpu_matrix_range.get().internal_size1();
+ size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+ //std::cout << "start_offset: " << start_offset << std::endl;
+ cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Block copy worked!" << std::endl;
+ }
+
+ }
+
+
+ /////////////////////////////////////////////////////////////
+ ///////////////////////// GPU to CPU ////////////////////////
+ /////////////////////////////////////////////////////////////
+
+
+ //row_major:
+ template <typename CPU_MATRIX, typename SCALARTYPE>
+ void copy(matrix_range<matrix<SCALARTYPE, row_major, 1> > const & gpu_matrix_range,
+ CPU_MATRIX & cpu_matrix)
+ {
+ assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+ && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+
+ if ( gpu_matrix_range.start2() != 0 || gpu_matrix_range.size2() != gpu_matrix_range.get().size2())
+ {
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size2());
+
+ //copy each stride separately:
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ {
+ size_t start_offset = (gpu_matrix_range.start1() + i) * gpu_matrix_range.get().internal_size2() + gpu_matrix_range.start2();
+ size_t num_entries = gpu_matrix_range.size2();
+ cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Strided copy worked!" << std::endl;
+
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ cpu_matrix(i,j) = entries[j];
+
+ }
+ }
+ else
+ {
+ //full block can be copied:
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+
+ size_t start_offset = gpu_matrix_range.start1() * gpu_matrix_range.get().internal_size2();
+ size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+ //std::cout << "start_offset: " << start_offset << std::endl;
+ cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Block copy worked!" << std::endl;
+
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ cpu_matrix(i,j) = entries[i*gpu_matrix_range.get().internal_size2() + j];
+ }
+
+ }
+
+
+ //column_major:
+ template <typename CPU_MATRIX, typename SCALARTYPE>
+ void copy(matrix_range<matrix<SCALARTYPE, column_major, 1> > const & gpu_matrix_range,
+ CPU_MATRIX & cpu_matrix)
+ {
+ assert( (cpu_matrix.size1() == gpu_matrix_range.size1())
+ && (cpu_matrix.size2() == gpu_matrix_range.size2()) );
+
+ if ( gpu_matrix_range.start1() != 0 || gpu_matrix_range.size1() != gpu_matrix_range.get().size1())
+ {
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size1());
+
+ //copy each stride separately:
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ {
+ size_t start_offset = (gpu_matrix_range.start2() + j) * gpu_matrix_range.get().internal_size1() + gpu_matrix_range.start1();
+ size_t num_entries = gpu_matrix_range.size1();
+ cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Strided copy worked!" << std::endl;
+
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ cpu_matrix(i,j) = entries[i];
+ }
+ }
+ else
+ {
+ //full block can be copied:
+ std::vector<SCALARTYPE> entries(gpu_matrix_range.size1()*gpu_matrix_range.size2());
+
+ //copy each stride separately:
+ size_t start_offset = gpu_matrix_range.start2() * gpu_matrix_range.get().internal_size1();
+ size_t num_entries = gpu_matrix_range.size1() * gpu_matrix_range.size2();
+ //std::cout << "start_offset: " << start_offset << std::endl;
+ cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_matrix_range.get().handle(), CL_TRUE,
+ sizeof(SCALARTYPE)*start_offset,
+ sizeof(SCALARTYPE)*num_entries,
+ &(entries[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ //std::cout << "Block copy worked!" << std::endl;
+
+ for (size_t i=0; i < gpu_matrix_range.size1(); ++i)
+ for (size_t j=0; j < gpu_matrix_range.size2(); ++j)
+ cpu_matrix(i,j) = entries[i + j*gpu_matrix_range.get().internal_size1()];
+ }
+
+ }
+
+
+/*
+ template<typename MatrixType>
+ std::ostream & operator<<(std::ostream & s, matrix_range<MatrixType> const & proxy)
+ {
+ MatrixType temp(proxy.size1(), proxy.size2());
+ viennacl::range r1(0, proxy.size1());
+ viennacl::range r2(0, proxy.size2());
+ matrix_range<MatrixType> temp2(temp, r1, r2);
+ viennacl::copy(proxy, temp2);
+ s << temp;
+ return s;
+ }*/
+
+
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/meta/enable_if.hpp b/viennacl/meta/enable_if.hpp
new file mode 100644
index 0000000..90d3457
--- /dev/null
+++ b/viennacl/meta/enable_if.hpp
@@ -0,0 +1,48 @@
+#ifndef VIENNACL_META_ENABLE_IF_HPP_
+#define VIENNACL_META_ENABLE_IF_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file enable_if.hpp
+ @brief Simple enable-if variant that uses the SFINAE pattern
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+ /** @brief Simple enable-if variant that uses the SFINAE pattern */
+ template <bool b, class T = void>
+ struct enable_if
+ {
+ typedef T type;
+ };
+
+ template <class T>
+ struct enable_if<false, T> {};
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/meta/predicate.hpp b/viennacl/meta/predicate.hpp
new file mode 100644
index 0000000..77b947b
--- /dev/null
+++ b/viennacl/meta/predicate.hpp
@@ -0,0 +1,115 @@
+#ifndef VIENNACL_META_PREDICATE_HPP_
+#define VIENNACL_META_PREDICATE_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file predicate.hpp
+ @brief All the predicates used within ViennaCL. Checks for expressions to be vectors, etc.
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+namespace viennacl
+{
+ //
+ // is_cpu_scalar: checks for float or double
+ //
+ template <typename T>
+ struct is_cpu_scalar
+ {
+ enum { value = false };
+ };
+
+ template <>
+ struct is_cpu_scalar<float>
+ {
+ enum { value = true };
+ };
+
+ template <>
+ struct is_cpu_scalar<double>
+ {
+ enum { value = true };
+ };
+
+ //
+ // is_scalar: checks for viennacl::scalar
+ //
+ template <typename T>
+ struct is_scalar
+ {
+ enum { value = false };
+ };
+
+ template <typename T>
+ struct is_scalar<viennacl::scalar<T> >
+ {
+ enum { value = true };
+ };
+
+ //
+ // is_vector
+ //
+ template <typename T>
+ struct is_vector
+ {
+ enum { value = false };
+ };
+
+ template <typename ScalarType, unsigned int ALIGNMENT>
+ struct is_vector<viennacl::vector<ScalarType, ALIGNMENT> >
+ {
+ enum { value = true };
+ };
+
+ template <typename T>
+ struct is_vector<viennacl::vector_range<T> >
+ {
+ enum { value = true };
+ };
+
+
+
+ //
+ // is_matrix
+ //
+ template <typename T>
+ struct is_matrix
+ {
+ enum { value = false };
+ };
+
+ template <typename ScalarType, typename F, unsigned int ALIGNMENT>
+ struct is_matrix<viennacl::matrix<ScalarType, F, ALIGNMENT> >
+ {
+ enum { value = true };
+ };
+
+ template <typename T>
+ struct is_matrix<viennacl::matrix_range<T> >
+ {
+ enum { value = true };
+ };
+
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/meta/result_of.hpp b/viennacl/meta/result_of.hpp
new file mode 100644
index 0000000..1c3d658
--- /dev/null
+++ b/viennacl/meta/result_of.hpp
@@ -0,0 +1,219 @@
+#ifndef VIENNACL_META_RESULT_OF_HPP_
+#define VIENNACL_META_RESULT_OF_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file result_of.hpp
+ @brief A collection of compile time type deductions
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+
+#ifdef VIENNACL_HAVE_UBLAS
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+ namespace result_of
+ {
+ //
+ // Retrieve size_type
+ //
+ template <typename T>
+ struct size_type
+ {
+ typedef typename T::size_type type;
+ };
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ template <class T, int a, int b, int c, int d, int e>
+ struct size_type< Eigen::Matrix<T, a, b, c, d, e> >
+ {
+ typedef std::size_t type;
+ };
+
+ template <>
+ struct size_type<Eigen::VectorXf>
+ {
+ typedef std::size_t type;
+ };
+
+ template <>
+ struct size_type<Eigen::VectorXd>
+ {
+ typedef std::size_t type;
+ };
+
+ template <typename T, int options>
+ struct size_type<Eigen::SparseMatrix<T, options> >
+ {
+ typedef std::size_t type;
+ };
+ #endif
+
+ //
+ // Retrieve value_type:
+ //
+ template <typename T>
+ struct value_type
+ {
+ typedef typename T::value_type type;
+ };
+
+ //
+ // Retrieve cpu value_type:
+ //
+ template <typename T>
+ struct cpu_value_type
+ {
+ typedef typename T::ERROR_CANNOT_DEDUCE_CPU_SCALAR_TYPE_FOR_T type;
+ };
+
+ template <>
+ struct cpu_value_type<float>
+ {
+ typedef float type;
+ };
+
+ template <>
+ struct cpu_value_type<double>
+ {
+ typedef double type;
+ };
+
+ template <typename T>
+ struct cpu_value_type<viennacl::scalar<T> >
+ {
+ typedef T type;
+ };
+
+ template <typename T, unsigned int ALIGNMENT>
+ struct cpu_value_type<viennacl::vector<T, ALIGNMENT> >
+ {
+ typedef T type;
+ };
+
+ template <typename T>
+ struct cpu_value_type<viennacl::vector_range<T> >
+ {
+ typedef typename cpu_value_type<T>::type type;
+ };
+
+ template <typename T1, typename T2, typename OP>
+ struct cpu_value_type<viennacl::vector_expression<T1, T2, OP> >
+ {
+ typedef typename cpu_value_type<T1>::type type;
+ };
+
+
+
+ template <typename T, typename F, unsigned int ALIGNMENT>
+ struct cpu_value_type<viennacl::matrix<T, F, ALIGNMENT> >
+ {
+ typedef T type;
+ };
+
+ template <typename T>
+ struct cpu_value_type<viennacl::matrix_range<T> >
+ {
+ typedef typename cpu_value_type<T>::type type;
+ };
+
+ template <typename T1, typename T2, typename OP>
+ struct cpu_value_type<viennacl::matrix_expression<T1, T2, OP> >
+ {
+ typedef typename cpu_value_type<T1>::type type;
+ };
+
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ template <>
+ struct value_type<Eigen::MatrixXf>
+ {
+ typedef Eigen::MatrixXf::RealScalar type;
+ };
+
+ template <>
+ struct value_type<Eigen::MatrixXd>
+ {
+ typedef Eigen::MatrixXd::RealScalar type;
+ };
+
+ template <typename ScalarType, int option>
+ struct value_type<Eigen::SparseMatrix<ScalarType, option> >
+ {
+ typedef ScalarType type;
+ };
+
+ template <>
+ struct value_type<Eigen::VectorXf>
+ {
+ typedef Eigen::VectorXf::RealScalar type;
+ };
+
+ template <>
+ struct value_type<Eigen::VectorXd>
+ {
+ typedef Eigen::VectorXd::RealScalar type;
+ };
+
+ #endif
+
+
+
+ template <typename T>
+ struct matrix_expression_internal_storage
+ {
+ typedef T & type;
+ };
+
+ template <>
+ struct matrix_expression_internal_storage<const float>
+ {
+ typedef float type;
+ };
+
+ template <>
+ struct matrix_expression_internal_storage<const double>
+ {
+ typedef double type;
+ };
+
+
+ } //namespace result_of
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/meta/tag_of.hpp b/viennacl/meta/tag_of.hpp
new file mode 100644
index 0000000..6f6c51d
--- /dev/null
+++ b/viennacl/meta/tag_of.hpp
@@ -0,0 +1,344 @@
+#ifndef VIENNACL_META_TAGOF_HPP_
+#define VIENNACL_META_TAGOF_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file tag_of.hpp
+ @brief Dispatch facility for distinguishing between ublas, STL and ViennaCL types
+*/
+
+#ifdef VIENNACL_HAVE_UBLAS
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#include <boost/numeric/ublas/vector.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+namespace viennacl
+{
+
+ // ----------------------------------------------------
+ // TAGS
+ //
+ struct tag_none {};
+ struct tag_mtl4 {};
+ struct tag_eigen {};
+ struct tag_ublas {};
+ struct tag_stl {};
+ struct tag_viennacl {};
+
+ namespace traits
+ {
+ // ----------------------------------------------------
+ // GENERIC BASE
+ //
+ /** @brief Generic base for wrapping other linear algebra packages
+ *
+ * Maps types to tags, e.g. viennacl::vector to tag_viennacl, ublas::vector to tag_ublas
+ * if the matrix type is unknown, tag_none is returned
+ *
+ * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+ *
+ * @tparam T The type to be inspected
+ */
+ template< typename T, typename Active = void >
+ struct tag_of;
+
+ template < typename Sequence, typename Active >
+ struct tag_of
+ {
+ typedef viennacl::tag_none type;
+ };
+
+ #ifdef VIENNACL_HAVE_MTL4
+ // ----------------------------------------------------
+ // MTL4
+ //
+ template <typename ScalarType>
+ struct tag_of< mtl::dense_vector<ScalarType> >
+ {
+ typedef viennacl::tag_mtl4 type;
+ };
+
+ template <typename ScalarType>
+ struct tag_of< mtl::compressed2D<ScalarType> >
+ {
+ typedef viennacl::tag_mtl4 type;
+ };
+
+ template <typename ScalarType, typename T>
+ struct tag_of< mtl::dense2D<ScalarType, T> >
+ {
+ typedef viennacl::tag_mtl4 type;
+ };
+ #endif
+
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ // ----------------------------------------------------
+ // Eigen
+ //
+ template <>
+ struct tag_of< Eigen::VectorXf >
+ {
+ typedef viennacl::tag_eigen type;
+ };
+
+ template <>
+ struct tag_of< Eigen::VectorXd >
+ {
+ typedef viennacl::tag_eigen type;
+ };
+
+ template <>
+ struct tag_of< Eigen::MatrixXf >
+ {
+ typedef viennacl::tag_eigen type;
+ };
+
+ template <>
+ struct tag_of< Eigen::MatrixXd >
+ {
+ typedef viennacl::tag_eigen type;
+ };
+
+ template <typename ScalarType, int option>
+ struct tag_of< Eigen::SparseMatrix<ScalarType, option> >
+ {
+ typedef viennacl::tag_eigen type;
+ };
+
+ #endif
+
+ #ifdef VIENNACL_HAVE_UBLAS
+ // ----------------------------------------------------
+ // UBLAS
+ //
+ template< typename T >
+ struct tag_of< boost::numeric::ublas::vector<T> >
+ {
+ typedef viennacl::tag_ublas type;
+ };
+
+ template< typename T >
+ struct tag_of< boost::numeric::ublas::matrix<T> >
+ {
+ typedef viennacl::tag_ublas type;
+ };
+
+ template< typename T1, typename T2 >
+ struct tag_of< boost::numeric::ublas::matrix_unary2<T1,T2> >
+ {
+ typedef viennacl::tag_ublas type;
+ };
+
+ template< typename T1, typename T2 >
+ struct tag_of< boost::numeric::ublas::compressed_matrix<T1,T2> >
+ {
+ typedef viennacl::tag_ublas type;
+ };
+
+ #endif
+
+ // ----------------------------------------------------
+ // STL types
+ //
+
+ //vector
+ template< typename T, typename A >
+ struct tag_of< std::vector<T, A> >
+ {
+ typedef viennacl::tag_stl type;
+ };
+
+ //dense matrix
+ template< typename T, typename A >
+ struct tag_of< std::vector<std::vector<T, A>, A> >
+ {
+ typedef viennacl::tag_stl type;
+ };
+
+ //sparse matrix (vector of maps)
+ template< typename KEY, typename DATA, typename COMPARE, typename AMAP, typename AVEC>
+ struct tag_of< std::vector<std::map<KEY, DATA, COMPARE, AMAP>, AVEC> >
+ {
+ typedef viennacl::tag_stl type;
+ };
+
+
+ // ----------------------------------------------------
+ // VIENNACL
+ //
+ template< typename T, unsigned int alignment >
+ struct tag_of< viennacl::vector<T, alignment> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T, typename F, unsigned int alignment >
+ struct tag_of< viennacl::matrix<T, F, alignment> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T1, typename T2, typename OP >
+ struct tag_of< viennacl::matrix_expression<T1,T2,OP> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T >
+ struct tag_of< viennacl::matrix_range<T> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T, unsigned int I>
+ struct tag_of< viennacl::compressed_matrix<T,I> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T, unsigned int I>
+ struct tag_of< viennacl::coordinate_matrix<T,I> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T, unsigned int I>
+ struct tag_of< viennacl::circulant_matrix<T,I> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T, unsigned int I>
+ struct tag_of< viennacl::hankel_matrix<T,I> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T, unsigned int I>
+ struct tag_of< viennacl::toeplitz_matrix<T,I> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+ template< typename T, unsigned int I>
+ struct tag_of< viennacl::vandermonde_matrix<T,I> >
+ {
+ typedef viennacl::tag_viennacl type;
+ };
+
+
+ // ----------------------------------------------------
+ } // end namespace traits
+
+
+ /** @brief Meta function which checks whether a tag is tag_mtl4
+ *
+ * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+ */
+ template <typename Tag>
+ struct is_mtl4
+ {
+ enum { value = false };
+ };
+
+ template <>
+ struct is_mtl4< viennacl::tag_mtl4 >
+ {
+ enum { value = true };
+ };
+
+ /** @brief Meta function which checks whether a tag is tag_eigen
+ *
+ * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+ */
+ template <typename Tag>
+ struct is_eigen
+ {
+ enum { value = false };
+ };
+
+ template <>
+ struct is_eigen< viennacl::tag_eigen >
+ {
+ enum { value = true };
+ };
+
+
+ /** @brief Meta function which checks whether a tag is tag_ublas
+ *
+ * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+ */
+ template <typename Tag>
+ struct is_ublas
+ {
+ enum { value = false };
+ };
+
+ template <>
+ struct is_ublas< viennacl::tag_ublas >
+ {
+ enum { value = true };
+ };
+
+ /** @brief Meta function which checks whether a tag is tag_ublas
+ *
+ * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+ */
+ template <typename Tag>
+ struct is_stl
+ {
+ enum { value = false };
+ };
+
+ template <>
+ struct is_stl< viennacl::tag_stl >
+ {
+ enum { value = true };
+ };
+
+
+ /** @brief Meta function which checks whether a tag is tag_viennacl
+ *
+ * This is an internal function only, there is no need for a library user of ViennaCL to care about it any further
+ */
+ template <typename Tag>
+ struct is_viennacl
+ {
+ enum { value = false };
+ };
+
+ template <>
+ struct is_viennacl< viennacl::tag_viennacl >
+ {
+ enum { value = true };
+ };
+
+} // end namespace viennacl
+
+#endif
diff --git a/viennacl/misc/bandwidth_reduction.hpp b/viennacl/misc/bandwidth_reduction.hpp
new file mode 100644
index 0000000..fa9691d
--- /dev/null
+++ b/viennacl/misc/bandwidth_reduction.hpp
@@ -0,0 +1,37 @@
+#ifndef VIENNACL_MISC_BANDWIDTH_REDUCTION_HPP
+#define VIENNACL_MISC_BANDWIDTH_REDUCTION_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/misc/bandwidth_reduction.hpp
+ @brief Convenience include for bandwidth reduction algorithms such as Cuthill-McKee or Gibbs-Poole-Stockmeyer. Experimental in 1.2.x.
+*/
+
+#include "viennacl/misc/cuthill_mckee.hpp"
+#include "viennacl/misc/gibbs_poole_stockmeyer.hpp"
+
+
+namespace viennacl
+{
+ //TODO: Add convenience overload here. Which should be default?
+
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/misc/cuthill_mckee.hpp b/viennacl/misc/cuthill_mckee.hpp
new file mode 100644
index 0000000..01a88bf
--- /dev/null
+++ b/viennacl/misc/cuthill_mckee.hpp
@@ -0,0 +1,468 @@
+#ifndef VIENNACL_MISC_CUTHILL_MCKEE_HPP
+#define VIENNACL_MISC_CUTHILL_MCKEE_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/misc/cuthill_mckee.hpp
+* @brief Implementation of several flavors of the Cuthill-McKee algorithm. Experimental in 1.2.x.
+*
+* Contributed by Philipp Grabenweger, interface adjustments by Karl Rupp.
+*/
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <map>
+#include <vector>
+#include <deque>
+#include <cmath>
+
+
+namespace viennacl
+{
+
+ namespace detail
+ {
+
+ // function to calculate the increment of combination comb.
+ // parameters:
+ // comb: pointer to vector<int> of size m, m <= n
+ // 1 <= comb[i] <= n for 0 <= i < m
+ // comb[i] < comb[i+1] for 0 <= i < m - 1
+ // comb represents an unordered selection of m values out of n
+ // n: int
+ // total number of values out of which comb is taken as selection
+ inline bool comb_inc(std::vector<int> & comb, int n)
+ {
+ int m;
+ int k;
+
+ m = comb.size();
+ // calculate k as highest possible index such that (*comb)[k-1] can be incremented
+ k = m;
+ while ( (k > 0) && ( ((k == m) && (comb[k-1] == n)) ||
+ ((k < m) && (comb[k-1] == comb[k] - 1) )) )
+ {
+ k--;
+ }
+ if (k == 0) // no further increment of comb possible -> return false
+ {
+ return false;
+ }
+ else
+ {
+ (comb[k-1])++; // increment (*comb)[k-1],
+ for (int i = k; i < m; i++) // and all higher index positions of comb are
+ // calculated just as directly following integer values (lowest possible values)
+ {
+ comb[i] = comb[k-1] + (i - k + 1);
+ }
+ return true;
+ }
+ }
+
+
+ // function to generate a node layering as a tree structure rooted at
+ // node s
+ template <typename MatrixType>
+ void generate_layering(MatrixType const & matrix,
+ std::vector< std::vector<int> > & l,
+ int s)
+ {
+ std::size_t n = matrix.size();
+ //std::vector< std::vector<int> > l;
+ std::vector<bool> inr(n, false);
+ std::vector<int> nlist;
+
+ nlist.push_back(s);
+ inr[s] = true;
+ l.push_back(nlist);
+
+ for (;;)
+ {
+ nlist.clear();
+ for (std::vector<int>::iterator it = l.back().begin();
+ it != l.back().end();
+ it++)
+ {
+ for (typename MatrixType::value_type::const_iterator it2 = matrix[*it].begin();
+ it2 != matrix[*it].end();
+ it2++)
+ {
+ if (it2->first == *it) continue;
+ if (inr[it2->first]) continue;
+
+ nlist.push_back(it2->first);
+ inr[it2->first] = true;
+ }
+ }
+
+ if (nlist.size() == 0)
+ break;
+
+ l.push_back(nlist);
+ }
+
+ }
+
+
+ // comparison function for comparing two vector<int> values by their
+ // [1]-element
+ inline bool cuthill_mckee_comp_func(std::vector<int> const & a,
+ std::vector<int> const & b)
+ {
+ return (a[1] < b[1]);
+ }
+
+ }
+
+ //
+ // Part 1: The original Cuthill-McKee algorithm
+ //
+
+
+ struct cuthill_mckee_tag {};
+
+ /** @brief Function for the calculation of a node number permutation to reduce the bandwidth of an incidence matrix by the Cuthill-McKee algorithm
+ *
+ * references:
+ * Algorithm was implemented similary as described in
+ * "Tutorial: Bandwidth Reduction - The CutHill-
+ * McKee Algorithm" posted by Ciprian Zavoianu as weblog at
+ * http://ciprian-zavoianu.blogspot.com/2009/01/project-bandwidth-reduction.html
+ * on January 15, 2009
+ * (URL taken on June 14, 2011)
+ *
+ * @param matrix vector of n matrix rows, where each row is a map<int, double> containing only the nonzero elements
+ * @return permutation vector r. r[l] = i means that the new label of node i will be l.
+ *
+ */
+ template <typename MatrixType>
+ std::vector<int> reorder(MatrixType const & matrix, cuthill_mckee_tag)
+ {
+ std::size_t n = matrix.size();
+ std::vector<int> r;
+ std::vector<bool> inr(n, false); // status array which remembers which nodes have been added to r
+ std::deque<int> q;
+ std::vector< std::vector<int> > nodes;
+ std::vector<int> tmp(2);
+ int p = 0;
+ int c;
+
+ int deg;
+ int deg_min;
+
+ r.reserve(n);
+ nodes.reserve(n);
+
+ do
+ {
+ // under all nodes not yet in r determine one with minimal degree
+ deg_min = -1;
+ for (std::size_t i = 0; i < n; i++)
+ {
+ if (!inr[i])
+ {
+ deg = matrix[i].size() - 1; // node degree
+ if (deg_min < 0 || deg < deg_min)
+ {
+ p = i; // node number
+ deg_min = deg;
+ }
+ }
+ }
+ q.push_back(p); // push that node p with minimal degree on q
+
+ do
+ {
+ c = q.front();
+ q.pop_front();
+ if (!inr[c])
+ {
+ r.push_back(c);
+ inr[c] = true;
+
+ // add all neighbouring nodes of c which are not yet in r to nodes
+ nodes.resize(0);
+ for (typename MatrixType::value_type::const_iterator it = matrix[c].begin(); it != matrix[c].end(); it++)
+ {
+ if (it->first == c) continue;
+ if (inr[it->first]) continue;
+
+ tmp[0] = it->first;
+ tmp[1] = matrix[it->first].size() - 1;
+ nodes.push_back(tmp);
+ }
+
+ // sort nodes by node degree
+ std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+ for (std::vector< std::vector<int> >::iterator it = nodes.begin(); it != nodes.end(); it++)
+ {
+ q.push_back((*it)[0]);
+ }
+ }
+ } while (q.size() != 0);
+ } while (r.size() < n);
+
+ return r;
+ }
+
+
+ //
+ // Part 2: Advanced Cuthill McKee
+ //
+
+ /** @brief Tag for the advanced Cuthill-McKee algorithm */
+ class advanced_cuthill_mckee_tag
+ {
+ public:
+ /** @brief CTOR which may take the additional parameters for the advanced algorithm.
+ *
+ * additional parameters for CTOR:
+ * a: 0 <= a <= 1
+ * parameter which specifies which nodes are tried as starting nodes
+ * of generated node layering (tree structure whith one ore more
+ * starting nodes).
+ * the relation deg_min <= deg <= deg_min + a * (deg_max - deg_min)
+ * must hold for node degree deg for a starting node, where deg_min/
+ * deg_max is the minimal/maximal node degree of all yet unnumbered
+ * nodes.
+ * gmax:
+ * integer which specifies maximum number of nodes in the root
+ * layer of the tree structure (gmax = 0 means no limit)
+ *
+ * @return permutation vector r. r[l] = i means that the new label of node i will be l.
+ *
+ */
+ advanced_cuthill_mckee_tag(double a = 0.0, std::size_t gmax = 1) : starting_node_param_(a), max_root_nodes_(gmax) {}
+
+ double starting_node_param() const { return starting_node_param_;}
+ void starting_node_param(double a) { if (a >= 0) starting_node_param_ = a; }
+
+ std::size_t max_root_nodes() const { return max_root_nodes_; }
+ void max_root_nodes(std::size_t gmax) { max_root_nodes_ = gmax; }
+
+ private:
+ double starting_node_param_;
+ std::size_t max_root_nodes_;
+ };
+
+
+
+ /** @brief Function for the calculation of a node number permutation to reduce the bandwidth of an incidence matrix by the advanced Cuthill-McKee algorithm
+ *
+ *
+ * references:
+ * see description of original Cuthill McKee implementation, and
+ * E. Cuthill and J. McKee: "Reducing the Bandwidth of sparse symmetric Matrices".
+ * Naval Ship Research and Development Center, Washington, D. C., 20007
+ */
+ template <typename MatrixType>
+ std::vector<int> reorder(MatrixType const & matrix,
+ advanced_cuthill_mckee_tag const & tag)
+ {
+ std::size_t n = matrix.size();
+ double a = tag.starting_node_param();
+ std::size_t gmax = tag.max_root_nodes();
+ std::vector<int> r;
+ std::vector<int> r_tmp;
+ std::vector<int> r_best;
+ std::vector<int> r2(n);
+ std::vector<bool> inr(n, false);
+ std::vector<bool> inr_tmp(n);
+ std::vector<bool> inr_best(n);
+ std::deque<int> q;
+ std::vector< std::vector<int> > nodes;
+ std::vector<int> nodes_p;
+ std::vector<int> tmp(2);
+ std::vector< std::vector<int> > l;
+ int deg_min;
+ int deg_max;
+ int deg_a;
+ int deg;
+ int bw;
+ int bw_best;
+ std::vector<int> comb;
+ std::size_t g;
+ int c;
+
+ r.reserve(n);
+ r_tmp.reserve(n);
+ r_best.reserve(n);
+ nodes.reserve(n);
+ nodes_p.reserve(n);
+ comb.reserve(n);
+
+ do
+ {
+ // add to nodes_p all nodes not yet in r which are candidates for the root node layer
+ // search unnumbered node and generate layering
+ for (std::size_t i = 0; i < n; i++)
+ {
+ if (!inr[i])
+ {
+ detail::generate_layering(matrix, l, i);
+ break;
+ }
+ }
+ nodes.resize(0);
+ for (std::vector< std::vector<int> >::iterator it = l.begin();
+ it != l.end(); it++)
+ {
+ for (std::vector<int>::iterator it2 = it->begin();
+ it2 != it->end(); it2++)
+ {
+ tmp[0] = *it2;
+ tmp[1] = matrix[*it2].size() - 1;
+ nodes.push_back(tmp);
+ }
+ }
+ // determine minimum and maximum node degree
+ deg_min = -1;
+ deg_max = -1;
+ for (std::vector< std::vector<int> >::iterator it = nodes.begin();
+ it != nodes.end(); it++)
+ {
+ deg = (*it)[1];
+ if (deg_min < 0 || deg < deg_min)
+ {
+ deg_min = deg;
+ }
+ if (deg_max < 0 || deg > deg_max)
+ {
+ deg_max = deg;
+ }
+ }
+ deg_a = deg_min + (int) (a * (deg_max - deg_min));
+ nodes_p.resize(0);
+ for (std::vector< std::vector<int> >::iterator it = nodes.begin();
+ it != nodes.end(); it++)
+ {
+ if ((*it)[1] <= deg_a)
+ {
+ nodes_p.push_back((*it)[0]);
+ }
+ }
+
+ inr_tmp = inr;
+ g = 1;
+ comb.resize(1);
+ comb[0] = 1;
+ bw_best = -1;
+
+ for (;;) // for all combinations of g <= gmax root nodes repeat
+ {
+ inr = inr_tmp;
+ r_tmp.resize(0);
+
+ // add the selected root nodes according to actual combination comb to q
+ for (std::vector<int>::iterator it = comb.begin();
+ it != comb.end(); it++)
+ {
+ q.push_back(nodes_p[(*it)-1]);
+ }
+
+ do // perform normal CutHill-McKee algorithm for given root nodes with
+ // resulting numbering stored in r_tmp
+ {
+ c = q.front();
+ q.pop_front();
+ if (!inr[c])
+ {
+ r_tmp.push_back(c);
+ inr[c] = true;
+
+ nodes.resize(0);
+ for (typename MatrixType::value_type::const_iterator it = matrix[c].begin(); it != matrix[c].end(); it++)
+ {
+ if (it->first == c) continue;
+ if (inr[it->first]) continue;
+
+ tmp[0] = it->first;
+ tmp[1] = matrix[it->first].size() - 1;
+ nodes.push_back(tmp);
+ }
+ std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+ for (std::vector< std::vector<int> >::iterator it =
+ nodes.begin(); it != nodes.end(); it++)
+ {
+ q.push_back((*it)[0]);
+ }
+ }
+ } while (q.size() != 0);
+
+ // calculate resulting bandwith for root node combination
+ // comb for current numbered component of the node graph
+ for (std::size_t i = 0; i < r_tmp.size(); i++)
+ {
+ r2[r_tmp[i]] = r.size() + i;
+ }
+ bw = 0;
+ for (std::size_t i = 0; i < r_tmp.size(); i++)
+ {
+ for (typename MatrixType::value_type::const_iterator it = matrix[r_tmp[i]].begin();
+ it != matrix[r_tmp[i]].end();
+ it++)
+ {
+ bw = std::max(bw, std::abs(static_cast<int>(r.size() + i) - r2[it->first]));
+ }
+ }
+
+ // remember ordering r_tmp in r_best for smallest bandwith
+ if (bw_best < 0 || bw < bw_best)
+ {
+ r_best = r_tmp;
+ bw_best = bw;
+ inr_best = inr;
+ }
+
+ // calculate next combination comb, if not existing
+ // increment g if g stays <= gmax, or else terminate loop
+ if (!detail::comb_inc(comb, nodes_p.size()))
+ {
+ g++;
+ if ( (gmax > 0 && g > gmax) || g > nodes_p.size())
+ {
+ break;
+ }
+ comb.resize(g);
+ for (std::size_t i = 0; i < g; i++)
+ {
+ comb[i] = i + 1;
+ }
+ }
+ }
+
+ // store best order r_best in result array r
+ for (std::vector<int>::iterator it = r_best.begin();
+ it != r_best.end(); it++)
+ {
+ r.push_back((*it));
+ }
+ inr = inr_best;
+
+ } while (r.size() < n);
+
+ return r;
+ }
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/misc/gibbs_poole_stockmeyer.hpp b/viennacl/misc/gibbs_poole_stockmeyer.hpp
new file mode 100644
index 0000000..6af4eb3
--- /dev/null
+++ b/viennacl/misc/gibbs_poole_stockmeyer.hpp
@@ -0,0 +1,450 @@
+#ifndef VIENNACL_MISC_GIBBS_POOLE_STOCKMEYER_HPP
+#define VIENNACL_MISC_GIBBS_POOLE_STOCKMEYER_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+
+/** @file viennacl/misc/gibbs_poole_stockmeyer.hpp
+ * @brief Implementation of the Gibbs-Poole-Stockmeyer algorithm. Experimental in 1.2.x.
+ *
+ * Contributed by Philipp Grabenweger, interface adjustments by Karl Rupp.
+ */
+
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+#include <map>
+#include <vector>
+#include <deque>
+#include <cmath>
+
+#include "viennacl/misc/cuthill_mckee.hpp"
+
+namespace viennacl
+{
+
+ namespace detail
+ {
+
+ // calculates width of a node layering
+ inline int calc_layering_width(std::vector< std::vector<int> > const & l)
+ {
+ int w;
+
+ w = 0;
+ for (std::size_t i = 0; i < l.size(); i++)
+ {
+ w = std::max(w, static_cast<int>(l[i].size()));
+ }
+
+ return w;
+ }
+
+ // function to decompose a list of nodes rg into connected components
+ // sorted by decreasing number of nodes per component
+ template <typename MatrixType>
+ std::vector< std::vector<int> > gps_rg_components(MatrixType const & matrix, int n,
+ std::vector<int> const & rg)
+ {
+ std::vector< std::vector<int> > rgc;
+ std::vector< std::vector<int> > rgc_sorted;
+ std::vector< std::vector<int> > sort_ind;
+ std::vector<int> ind(2);
+ std::vector<int> tmp;
+ int c;
+ std::vector<bool> inr(n, true);
+ std::deque<int> q;
+
+ for (std::size_t i = 0; i < rg.size(); i++)
+ {
+ inr[rg[i]] = false;
+ }
+
+ do
+ {
+ for (int i = 0; i < n; i++)
+ {
+ if (!inr[i])
+ {
+ q.push_front(i);
+ break;
+ }
+ }
+ if (q.size() == 0)
+ {
+ break;
+ }
+
+ tmp.resize(0);
+ while (q.size() > 0)
+ {
+ c = q.front();
+ q.pop_front();
+
+ if (!inr[c])
+ {
+ tmp.push_back(c);
+ inr[c] = true;
+
+ for (typename MatrixType::value_type::const_iterator it = matrix[c].begin(); it != matrix[c].end(); it++)
+ {
+ if (it->first == c) continue;
+ if (inr[it->first]) continue;
+
+ q.push_back(it->first);
+ }
+ }
+ }
+ rgc.push_back(tmp);
+ } while (true);
+
+ for (std::size_t i = 0; i < rgc.size(); i++)
+ {
+ ind[0] = i;
+ ind[1] = rgc[i].size();
+ sort_ind.push_back(ind);
+ }
+ std::sort(sort_ind.begin(), sort_ind.end(), detail::cuthill_mckee_comp_func);
+ for (std::size_t i = 0; i < rgc.size(); i++)
+ {
+ rgc_sorted.push_back(rgc[sort_ind[rgc.size()-1-i][0]]);
+ }
+
+ return rgc_sorted;
+ }
+
+ } // namespace detail
+
+
+ struct gibbs_poole_stockmeyer_tag {};
+
+
+ /** @brief Function for the calculation of a node numbering permutation vector to reduce the bandwidth of a incidence matrix by the Gibbs-Poole-Stockmeyer algorithm
+ *
+ * references:
+ * Werner Neudorf: "Bandbreitenreduktion - Teil 3. Algorithmus von
+ * Gibbs-Poole-Stockmeyer. Testbeispiele mit CM und GPS", Preprint No.
+ * M 08/02, September 2002. Technische Universität Ilmenau, Fakultät
+ * für Mathematik und Naturwissenschaften, Institut für Mathematik.
+ * http://www.db-thueringen.de/servlets/DerivateServlet/Derivate-8673/IfM_Preprint_M_02_08.pdf
+ * (URL taken on June 14, 2011)
+ *
+ * @param matrix vector of n matrix rows, where each row is a map<int, double> containing only the nonzero elements
+ * @return permutation vector r. r[l] = i means that the new label of node i will be l.
+ */
+ template <typename MatrixType>
+ std::vector<int> reorder(MatrixType const & matrix,
+ gibbs_poole_stockmeyer_tag)
+ {
+ std::size_t n = matrix.size();
+ std::vector<int> r;
+ std::vector< std::vector<int> > rl;
+ std::size_t l = 0;
+ int state;
+ bool state_end;
+ std::vector< std::vector<int> > nodes;
+ std::vector<bool> inr(n, false);
+ std::vector<bool> isn(n, false);
+ std::vector<int> tmp(2);
+ int g = 0;
+ int h = 0;
+ std::vector< std::vector<int> > lg;
+ std::vector< std::vector<int> > lh;
+ std::vector< std::vector<int> > ls;
+ std::map< int, std::vector<int> > lap;
+ std::vector<int> rg;
+ std::vector< std::vector<int> > rgc;
+ int m;
+ int m_min;
+ bool new_g = true;
+ int k1, k2, k3, k4;
+ std::vector<int> wvs;
+ std::vector<int> wvsg;
+ std::vector<int> wvsh;
+ int deg_min;
+ int deg;
+ int ind_min;
+
+ r.reserve(n);
+ nodes.reserve(n);
+
+ while (r.size() < n) // for all components of the graph apply GPS algorithm
+ {
+ // determine node g with mimimal degree among all nodes which
+ // are not yet in result array r
+ deg_min = -1;
+ for (std::size_t i = 0; i < n; i++)
+ {
+ if (!inr[i])
+ {
+ deg = matrix[i].size() - 1; // node degree
+ if (deg_min < 0 || deg < deg_min)
+ {
+ g = i; // node number
+ deg_min = deg;
+ }
+ }
+ }
+
+ // algorithm for determining nodes g, h as endpoints of a pseudo graph diameter
+ while (new_g)
+ {
+ lg.clear();
+ detail::generate_layering(matrix, lg, g);
+
+ nodes.resize(0);
+ for (std::size_t i = 0; i < lg.back().size(); i++)
+ {
+ tmp[0] = lg.back()[i];
+ tmp[1] = matrix[lg.back()[i]].size() - 1;
+ nodes.push_back(tmp);
+ }
+ std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+ for (std::size_t i = 0; i < nodes.size(); i++)
+ {
+ lg.back()[i] = nodes[i][0];
+ }
+
+ m_min = -1;
+ new_g = false;
+ for (std::size_t i = 0; i < lg.back().size(); i++)
+ {
+ lh.clear();
+ detail::generate_layering(matrix, lh, lg.back()[i]);
+ if (lh.size() > lg.size())
+ {
+ g = lg.back()[i];
+ new_g = true;
+ break;
+ }
+ m = detail::calc_layering_width(lh);
+ if (m_min < 0 || m < m_min)
+ {
+ m_min = m;
+ h = lg.back()[i];
+ }
+ }
+ }
+
+ lh.clear();
+ detail::generate_layering(matrix, lh, h);
+
+ // calculate ls as layering intersection and rg as remaining
+ // graph
+ lap.clear();
+ for (std::size_t i = 0; i < lg.size(); i++)
+ {
+ for (std::size_t j = 0; j < lg[i].size(); j++)
+ {
+ lap[lg[i][j]].resize(2);
+ lap[lg[i][j]][0] = i;
+ }
+ }
+ for (std::size_t i = 0; i < lh.size(); i++)
+ {
+ for (std::size_t j = 0; j < lh[i].size(); j++)
+ {
+ lap[lh[i][j]][1] = lg.size() - 1 - i;
+ }
+ }
+ rg.clear();
+ ls.clear();
+ ls.resize(lg.size());
+ for (std::map< int, std::vector<int> >::iterator it = lap.begin();
+ it != lap.end(); it++)
+ {
+ if ((it->second)[0] == (it->second)[1])
+ {
+ ls[(it->second)[0]].push_back(it->first);
+ }
+ else
+ {
+ rg.push_back(it->first);
+ }
+ }
+ // partition remaining graph in connected components
+ rgc = detail::gps_rg_components(matrix, n, rg);
+
+ // insert nodes of each component of rgc
+ k1 = detail::calc_layering_width(lg);
+ k2 = detail::calc_layering_width(lh);
+ wvs.resize(ls.size());
+ wvsg.resize(ls.size());
+ wvsh.resize(ls.size());
+ for (std::size_t i = 0; i < rgc.size(); i++)
+ {
+ for (std::size_t j = 0; j < ls.size(); j++)
+ {
+ wvs[j] = ls[j].size();
+ wvsg[j] = ls[j].size();
+ wvsh[j] = ls[j].size();
+ }
+ for (std::size_t j = 0; j < rgc[i].size(); j++)
+ {
+ (wvsg[lap[rgc[i][j]][0]])++;
+ (wvsh[lap[rgc[i][j]][1]])++;
+ }
+ k3 = 0;
+ k4 = 0;
+ for (std::size_t j = 0; j < ls.size(); j++)
+ {
+ if (wvsg[j] > wvs[j])
+ {
+ k3 = std::max(k3, wvsg[j]);
+ }
+ if (wvsh[j] > wvs[j])
+ {
+ k4 = std::max(k4, wvsh[j]);
+ }
+ }
+ if (k3 < k4 || (k3 == k4 && k1 <= k2) )
+ {
+ for (std::size_t j = 0; j < rgc[i].size(); j++)
+ {
+ ls[lap[rgc[i][j]][0]].push_back(rgc[i][j]);
+ }
+ }
+ else
+ {
+ for (std::size_t j = 0; j < rgc[i].size(); j++)
+ {
+ ls[lap[rgc[i][j]][1]].push_back(rgc[i][j]);
+ }
+ }
+ }
+
+ // renumber nodes in ls
+ rl.clear();
+ rl.resize(ls.size());
+ state = 1;
+ state_end = false;
+ while (!state_end)
+ {
+ switch(state)
+ {
+ case 1:
+ l = 0;
+ state = 4;
+ break;
+
+ case 2:
+ for (std::size_t i = 0; i < rl[l-1].size(); i++)
+ {
+ isn.assign(n, false);
+ for (std::map<int, double>::const_iterator it = matrix[rl[l-1][i]].begin();
+ it != matrix[rl[l-1][i]].end();
+ it++)
+ {
+ if (it->first == rl[l-1][i]) continue;
+ isn[it->first] = true;
+ }
+ nodes.resize(0);
+ for (std::size_t j = 0; j < ls[l].size(); j++)
+ {
+ if (inr[ls[l][j]]) continue;
+ if (!isn[ls[l][j]]) continue;
+ tmp[0] = ls[l][j];
+ tmp[1] = matrix[ls[l][j]].size() - 1;
+ nodes.push_back(tmp);
+ }
+ std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+ for (std::size_t j = 0; j < nodes.size(); j++)
+ {
+ rl[l].push_back(nodes[j][0]);
+ r.push_back(nodes[j][0]);
+ inr[nodes[j][0]] = true;
+ }
+ }
+
+ case 3:
+ for (std::size_t i = 0; i < rl[l].size(); i++)
+ {
+ isn.assign(n, false);
+ for (std::map<int, double>::const_iterator it = matrix[rl[l][i]].begin();
+ it != matrix[rl[l][i]].end();
+ it++)
+ {
+ if (it->first == rl[l][i]) continue;
+ isn[it->first] = true;
+ }
+ nodes.resize(0);
+ for (std::size_t j = 0; j < ls[l].size(); j++)
+ {
+ if (inr[ls[l][j]]) continue;
+ if (!isn[ls[l][j]]) continue;
+ tmp[0] = ls[l][j];
+ tmp[1] = matrix[ls[l][j]].size() - 1;
+ nodes.push_back(tmp);
+ }
+ std::sort(nodes.begin(), nodes.end(), detail::cuthill_mckee_comp_func);
+ for (std::size_t j = 0; j < nodes.size(); j++)
+ {
+ rl[l].push_back(nodes[j][0]);
+ r.push_back(nodes[j][0]);
+ inr[nodes[j][0]] = true;
+ }
+ }
+
+ case 4:
+ if (rl[l].size() < ls[l].size())
+ {
+ deg_min = -1;
+ for (std::size_t j = 0; j < ls[l].size(); j++)
+ {
+ if (inr[ls[l][j]]) continue;
+ deg = matrix[ls[l][j]].size() - 1;
+ if (deg_min < 0 || deg < deg_min)
+ {
+ ind_min = ls[l][j];
+ deg_min = deg;
+ }
+ }
+ rl[l].push_back(ind_min);
+ r.push_back(ind_min);
+ inr[ind_min] = true;
+ state = 3;
+ break;
+ }
+
+ case 5:
+ l++;
+ if (l < ls.size())
+ {
+ state = 2;
+ }
+ else
+ {
+ state_end = true;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ }
+
+ return r;
+ }
+
+
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/ocl/backend.hpp b/viennacl/ocl/backend.hpp
index 54b25fd..199ab8c 100644
--- a/viennacl/ocl/backend.hpp
+++ b/viennacl/ocl/backend.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_BACKEND_HPP_
+#define VIENNACL_OCL_BACKEND_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_BACKEND_HPP_
-#define _VIENNACL_BACKEND_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file backend.hpp
@brief Implementations of the OpenCL backend, where all contexts are stored in.
diff --git a/viennacl/ocl/command_queue.hpp b/viennacl/ocl/command_queue.hpp
index abeb26d..c176cb7 100644
--- a/viennacl/ocl/command_queue.hpp
+++ b/viennacl/ocl/command_queue.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_COMMAND_QUEUE_HPP_
+#define VIENNACL_OCL_COMMAND_QUEUE_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_COMMAND_QUEUE_HPP_
-#define _VIENNACL_COMMAND_QUEUE_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file command_queue.hpp
@brief Implementations of command queue representations
diff --git a/viennacl/ocl/context.hpp b/viennacl/ocl/context.hpp
index 89beeee..e2355fc 100644
--- a/viennacl/ocl/context.hpp
+++ b/viennacl/ocl/context.hpp
@@ -1,21 +1,23 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_CONTEXT_HPP_
+#define VIENNACL_OCL_CONTEXT_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_CONTEXT_HPP_
-#define _VIENNACL_CONTEXT_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
-/** @file command_queue.hpp
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/ocl/context.hpp
@brief Represents an OpenCL context within ViennaCL
*/
@@ -44,8 +46,17 @@ namespace viennacl
typedef std::vector< viennacl::ocl::program > ProgramContainer;
public:
- context() : initialized_(false), device_type_(CL_DEVICE_TYPE_DEFAULT), current_device_id(0) {}
+ context() : initialized_(false),
+ device_type_(CL_DEVICE_TYPE_DEFAULT),
+ current_device_id(0),
+ default_device_num_(1) {}
+
+ //////// Get and set default number of devices per context */
+ /** @brief Returns the maximum number of devices to be set up for the context */
+ std::size_t default_device_num() const { return default_device_num_; }
+ /** @brief Sets the maximum number of devices to be set up for the context */
+ void default_device_num(std::size_t new_num) { default_device_num_ = new_num; }
////////// get and set preferred device type /////////////////////
/** @brief Returns the default device type for the context */
@@ -175,7 +186,7 @@ namespace viennacl
template < typename SCALARTYPE, typename A, template <typename, typename> class VectorType >
viennacl::ocl::handle<cl_mem> create_memory(cl_mem_flags flags, const VectorType<SCALARTYPE, A> & _buffer)
{
- return create_memory(flags, static_cast<unsigned int>(sizeof(SCALARTYPE) * _buffer.size()), (void*)&_buffer[0]);
+ return create_memory(flags, static_cast<cl_uint>(sizeof(SCALARTYPE) * _buffer.size()), (void*)&_buffer[0]);
}
//////////////////// create queues ////////////////////////////////
@@ -263,6 +274,7 @@ namespace viennacl
clGetProgramBuildInfo(temp, devices_[0].id(), CL_PROGRAM_BUILD_LOG, sizeof(char)*1024, &buffer, NULL);
std::cout << "Build Scalar: Err = " << err << " Status = " << status << std::endl;
std::cout << "Log: " << buffer << std::endl;
+ //std::cout << "Sources: " << source << std::endl;
#endif
VIENNACL_ERR_CHECK(err);
@@ -360,7 +372,11 @@ namespace viennacl
++iter)
device_id_array.push_back(iter->id());
- h_ = clCreateContext(0, device_id_array.size(), &(device_id_array[0]), NULL, NULL, &err);
+ cl_uint device_num = std::max(default_device_num_, device_id_array.size());
+ h_ = clCreateContext(0,
+ device_num,
+ &(device_id_array[0]),
+ NULL, NULL, &err);
VIENNACL_ERR_CHECK(err);
initialized_ = true;
@@ -419,6 +435,7 @@ namespace viennacl
viennacl::ocl::handle<cl_context> h_;
std::vector< viennacl::ocl::device > devices_;
unsigned int current_device_id;
+ std::size_t default_device_num_;
ProgramContainer programs_;
std::map< cl_device_id, std::vector< viennacl::ocl::command_queue> > queues_;
}; //context
diff --git a/viennacl/ocl/device.hpp b/viennacl/ocl/device.hpp
index 2098891..73d6263 100644
--- a/viennacl/ocl/device.hpp
+++ b/viennacl/ocl/device.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_DEVICE_HPP_
+#define VIENNACL_OCL_DEVICE_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_DEVICE_HPP_
-#define _VIENNACL_DEVICE_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file device.hpp
@brief Represents an OpenCL device within ViennaCL
diff --git a/viennacl/ocl/enqueue.hpp b/viennacl/ocl/enqueue.hpp
index 7ab3047..3e75c61 100644
--- a/viennacl/ocl/enqueue.hpp
+++ b/viennacl/ocl/enqueue.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_ENQUEUE_HPP_
+#define VIENNACL_OCL_ENQUEUE_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_ENQUEUE_HPP_
-#define _VIENNACL_ENQUEUE_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file enqueue.hpp
@brief Enqueues kernels into command queues
diff --git a/viennacl/ocl/error.hpp b/viennacl/ocl/error.hpp
index b7a5321..5a767c9 100644
--- a/viennacl/ocl/error.hpp
+++ b/viennacl/ocl/error.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_ERROR_HPP_
+#define VIENNACL_OCL_ERROR_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_ERROR_HPP_
-#define _VIENNACL_ERROR_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file error.hpp
@brief Error handling for the OpenCL layer of ViennaCL
diff --git a/viennacl/ocl/forwards.h b/viennacl/ocl/forwards.h
index 4ea9d83..b57c49d 100644
--- a/viennacl/ocl/forwards.h
+++ b/viennacl/ocl/forwards.h
@@ -1,24 +1,26 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_OCL_FORWARDS_H_
+#define VIENNACL_OCL_FORWARDS_H_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file ocl/forwards.h
@brief This file provides the forward declarations for the OpenCL layer of ViennaCL
*/
-#ifndef _VIENNACL_OCL_FORWARDS_H_
-#define _VIENNACL_OCL_FORWARDS_H_
-
#define VIENNACL_OCL_MAX_DEVICE_NUM 8
#include <stddef.h>
diff --git a/viennacl/ocl/handle.hpp b/viennacl/ocl/handle.hpp
index f83481f..30ccaed 100644
--- a/viennacl/ocl/handle.hpp
+++ b/viennacl/ocl/handle.hpp
@@ -1,19 +1,25 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_HANDLE_HPP_
+#define VIENNACL_OCL_HANDLE_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_HANDLE_HPP_
-#define _VIENNACL_HANDLE_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/ocl/handle.hpp
+ @brief Implementation of a smart-pointer-like class for handling OpenCL handles.
+*/
#ifdef __APPLE__
#include <OpenCL/cl.h>
diff --git a/viennacl/ocl/kernel.hpp b/viennacl/ocl/kernel.hpp
index 03709a8..97811cd 100644
--- a/viennacl/ocl/kernel.hpp
+++ b/viennacl/ocl/kernel.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_KERNEL_HPP_
-#define _VIENNACL_KERNEL_HPP_
+#ifndef VIENNACL_OCL_KERNEL_HPP_
+#define VIENNACL_OCL_KERNEL_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file kernel.hpp
@brief Representation of an OpenCL kernel in ViennaCL.
@@ -178,7 +180,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting two kernel parameter */
+ /** @brief Convenience function for setting two kernel parameters */
template <typename T0, typename T1>
kernel & operator()(T0 const & t0, T1 const & t1)
{
@@ -186,7 +188,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting three kernel parameter */
+ /** @brief Convenience function for setting three kernel parameters */
template <typename T0, typename T1, typename T2>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2)
{
@@ -194,7 +196,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting four kernel parameter */
+ /** @brief Convenience function for setting four kernel parameters */
template <typename T0, typename T1, typename T2, typename T3>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3)
{
@@ -202,7 +204,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting five kernel parameter */
+ /** @brief Convenience function for setting five kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4)
{
@@ -210,7 +212,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting six kernel parameter */
+ /** @brief Convenience function for setting six kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5)
{
@@ -218,7 +220,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting seven kernel parameter */
+ /** @brief Convenience function for setting seven kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6)
{
@@ -226,7 +228,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting eight kernel parameter */
+ /** @brief Convenience function for setting eight kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7)
{
@@ -234,7 +236,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting nine kernel parameter */
+ /** @brief Convenience function for setting nine kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5, T6 const & t6, T7 const & t7, T8 const & t8)
{
@@ -242,7 +244,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting ten kernel parameter */
+ /** @brief Convenience function for setting ten kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4,
typename T5, typename T6, typename T7, typename T8, typename T9>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4,
@@ -252,7 +254,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting eleven kernel parameter */
+ /** @brief Convenience function for setting eleven kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
@@ -262,7 +264,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting twelve kernel parameter */
+ /** @brief Convenience function for setting twelve kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10, typename T11>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
@@ -273,7 +275,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting thirteen kernel parameter */
+ /** @brief Convenience function for setting thirteen kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12>
kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
@@ -284,7 +286,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting fourteen kernel parameter */
+ /** @brief Convenience function for setting fourteen kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
typename T12, typename T13>
@@ -298,7 +300,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting fifteen kernel parameter */
+ /** @brief Convenience function for setting fifteen kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
typename T12, typename T13, typename T14>
@@ -312,7 +314,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting sixteen kernel parameter */
+ /** @brief Convenience function for setting sixteen kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
typename T12, typename T13, typename T14, typename T15>
@@ -326,7 +328,7 @@ namespace viennacl
return *this;
}
- /** @brief Convenience function for setting seventeen kernel parameter */
+ /** @brief Convenience function for setting seventeen kernel parameters */
template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
typename T12, typename T13, typename T14, typename T15, typename T16>
@@ -340,6 +342,110 @@ namespace viennacl
return *this;
}
+ /** @brief Convenience function for setting eighteen kernel parameters */
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+ typename T12, typename T13, typename T14, typename T15, typename T16, typename T17>
+ kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+ T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+ T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17)
+ {
+ arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+ arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+ arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+ return *this;
+ }
+
+ /** @brief Convenience function for setting nineteen kernel parameters */
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+ typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+ typename T18>
+ kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+ T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+ T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+ T18 const & t18
+ )
+ {
+ arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+ arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+ arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+ arg(18, t18);
+ return *this;
+ }
+
+ /** @brief Convenience function for setting twenty kernel parameters */
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+ typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+ typename T18, typename T19>
+ kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+ T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+ T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+ T18 const & t18, T19 const & t19
+ )
+ {
+ arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+ arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+ arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+ arg(18, t18); arg(19, t19);
+ return *this;
+ }
+
+ /** @brief Convenience function for setting twentyone kernel parameters */
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+ typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+ typename T18, typename T19, typename T20>
+ kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+ T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+ T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+ T18 const & t18, T19 const & t19, T20 const & t20
+ )
+ {
+ arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+ arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+ arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+ arg(18, t18); arg(19, t19); arg(20, t20);
+ return *this;
+ }
+
+ /** @brief Convenience function for setting twentytwo kernel parameters */
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+ typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+ typename T18, typename T19, typename T20, typename T21>
+ kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+ T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+ T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+ T18 const & t18, T19 const & t19, T20 const & t20, T21 const & t21
+ )
+ {
+ arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+ arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+ arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+ arg(18, t18); arg(19, t19); arg(20, t20); arg(21, t21);
+ return *this;
+ }
+
+ /** @brief Convenience function for setting twentythree kernel parameters */
+ template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10, typename T11,
+ typename T12, typename T13, typename T14, typename T15, typename T16, typename T17,
+ typename T18, typename T19, typename T20, typename T21, typename T22>
+ kernel & operator()(T0 const & t0, T1 const & t1, T2 const & t2, T3 const & t3, T4 const & t4, T5 const & t5,
+ T6 const & t6, T7 const & t7, T8 const & t8, T9 const & t9, T10 const & t10, T11 const & t11,
+ T12 const & t12, T13 const & t13, T14 const & t14, T15 const & t15, T16 const & t16, T17 const & t17,
+ T18 const & t18, T19 const & t19, T20 const & t20, T21 const & t21, T22 const & t22
+ )
+ {
+ arg(0, t0); arg(1, t1); arg(2, t2); arg(3, t3); arg(4, t4); arg(5, t5);
+ arg(6, t6); arg(7, t7); arg(8, t8); arg(9, t9); arg(10, t10); arg(11, t11);
+ arg(12, t12); arg(13, t13); arg(14, t14); arg(15, t15); arg(16, t16); arg(17, t17);
+ arg(18, t18); arg(19, t19); arg(20, t20); arg(21, t21); arg(22, t22);
+ return *this;
+ }
+
/** @brief Returns the local work size at the respective dimension
*
* @param index Dimension index (currently either 0 or 1)
@@ -388,6 +494,9 @@ namespace viennacl
std::string const & name() const { return name_; }
+ viennacl::ocl::handle<cl_kernel> const & handle() const { return handle_; }
+
+
private:
void create_kernel()
{
@@ -400,9 +509,9 @@ namespace viennacl
if (err != CL_SUCCESS)
{
#if defined(VIENNACL_DEBUG_ALL) || defined(VIENNACL_DEBUG_KERNEL)
- std::cout << "ViennaCL: Could not build kernel '" << name_ << "'." << std::endl;
+ std::cout << "ViennaCL: Could not create kernel '" << name_ << "'." << std::endl;
#endif
- std::cerr << "Could not build kernel '" << name_ << "'." << std::endl;
+ //std::cerr << "Could not build kernel '" << name_ << "'." << std::endl;
}
VIENNACL_ERR_CHECK(err);
}
@@ -431,8 +540,6 @@ namespace viennacl
}
}
- viennacl::ocl::handle<cl_kernel> const & handle() const { return handle_; }
-
viennacl::ocl::handle<cl_kernel> handle_;
viennacl::ocl::handle<cl_program> program_;
std::string name_;
diff --git a/viennacl/ocl/local_mem.hpp b/viennacl/ocl/local_mem.hpp
index 8152d20..24b58f0 100644
--- a/viennacl/ocl/local_mem.hpp
+++ b/viennacl/ocl/local_mem.hpp
@@ -1,20 +1,22 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-
-#ifndef _VIENNACL_LOCAL_MEM_HPP_
-#define _VIENNACL_LOCAL_MEM_HPP_
+#ifndef VIENNACL_OCL_LOCAL_MEM_HPP_
+#define VIENNACL_OCL_LOCAL_MEM_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
/** @file local_mem.hpp
@brief A local (shared) memory object for OpenCL
diff --git a/viennacl/ocl/platform.hpp b/viennacl/ocl/platform.hpp
index 93790d4..e954ee9 100644
--- a/viennacl/ocl/platform.hpp
+++ b/viennacl/ocl/platform.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_PLATFORM_HPP_
+#define VIENNACL_OCL_PLATFORM_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_PLATFORM_HPP_
-#define _VIENNACL_PLATFORM_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file platform.hpp
@brief Implements a OpenCL platform within ViennaCL
diff --git a/viennacl/ocl/program.hpp b/viennacl/ocl/program.hpp
index 04d8560..e978c20 100644
--- a/viennacl/ocl/program.hpp
+++ b/viennacl/ocl/program.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_OCL_PROGRAM_HPP_
+#define VIENNACL_OCL_PROGRAM_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_PROGRAM_HPP_
-#define _VIENNACL_PROGRAM_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file program.hpp
@brief Implements an OpenCL program class for ViennaCL
@@ -76,6 +78,7 @@ namespace viennacl
return *it;
}
std::cerr << "ViennaCL: FATAL ERROR: Could not find kernel '" << name << "'" << std::endl;
+ std::cout << "Number of kernels in program: " << kernels_.size() << std::endl;
assert(!"Kernel not found");
return kernels_[0]; //return a defined object
}
diff --git a/viennacl/ocl/utils.hpp b/viennacl/ocl/utils.hpp
index e03ddf9..2769a55 100644
--- a/viennacl/ocl/utils.hpp
+++ b/viennacl/ocl/utils.hpp
@@ -1,22 +1,24 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_OCL_UTILS_HPP_
-#define _VIENNACL_OCL_UTILS_HPP_
-
-/** @file backend.hpp
- @brief Implementations of the OpenCL backend, where all contexts are stored in.
+#ifndef VIENNACL_OCL_UTILS_HPP_
+#define VIENNACL_OCL_UTILS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/ocl/utils.hpp
+ @brief Provides OpenCL-related utilities.
*/
#include <vector>
diff --git a/viennacl/range.hpp b/viennacl/range.hpp
new file mode 100644
index 0000000..9197c83
--- /dev/null
+++ b/viennacl/range.hpp
@@ -0,0 +1,75 @@
+#ifndef VIENNACL_RANGE_HPP_
+#define VIENNACL_RANGE_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file range.hpp
+ @brief Implementation of a range object for use with proxy objects
+*/
+
+#include <vector>
+#include <stddef.h>
+#include <assert.h>
+#include "viennacl/forwards.h"
+
+namespace viennacl
+{
+
+ /** @brief A range class that refers to an interval [start, stop), where 'start' is included, and 'stop' is excluded.
+ *
+ * Similar to the boost::numeric::ublas::basic_range class.
+ */
+ template <typename SizeType /* see forwards.h for default argument*/,
+ typename DistanceType /* see forwards.h for default argument*/>
+ class basic_range
+ {
+ public:
+ typedef SizeType size_type;
+ typedef DistanceType difference_type;
+ typedef size_type value_type;
+ typedef value_type const_reference;
+ typedef const_reference reference;
+
+ basic_range() : start_(0), size_(0) {}
+ basic_range(size_type start_index, size_type stop_index) : start_(start_index), size_(stop_index - start_index)
+ {
+ assert(start_index <= stop_index);
+ }
+
+
+ size_type start() const { return start_; }
+ size_type size() const { return size_; }
+
+ const_reference operator()(size_type i) const
+ {
+ assert(i < size());
+ return start_ + i;
+ }
+ const_reference operator[](size_type i) const { return operator()(i); }
+
+ bool operator==(const basic_range & r) const { return (start_ == r.start_) && (size_ == r.size_); }
+ bool operator!=(const basic_range & r) const { return !(*this == r); }
+
+ private:
+ size_type start_;
+ size_type size_;
+ };
+
+
+}
+
+#endif
\ No newline at end of file
diff --git a/viennacl/scalar.hpp b/viennacl/scalar.hpp
index a536609..303fdb5 100644
--- a/viennacl/scalar.hpp
+++ b/viennacl/scalar.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_SCALAR_HPP_
-#define _VIENNACL_SCALAR_HPP_
+#ifndef VIENNACL_SCALAR_HPP_
+#define VIENNACL_SCALAR_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file scalar.hpp
@brief Implementation of the ViennaCL scalar class
diff --git a/viennacl/toeplitz_matrix.hpp b/viennacl/toeplitz_matrix.hpp
new file mode 100644
index 0000000..1f67fe3
--- /dev/null
+++ b/viennacl/toeplitz_matrix.hpp
@@ -0,0 +1,280 @@
+#ifndef VIENNACL_TOEPLITZ_MATRIX_HPP
+#define VIENNACL_TOEPLITZ_MATRIX_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file toeplitz_matrix.hpp
+ @brief Implementation of the toeplitz_matrix class for efficient manipulation of Toeplitz matrices. Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/fft.hpp"
+
+#include "viennacl/linalg/toeplitz_matrix_operations.hpp"
+
+
+namespace viennacl {
+
+ /** @brief A Toeplitz matrix class
+ *
+ * @tparam SCALARTYPE The underlying scalar type (either float or double)
+ * @tparam ALIGNMENT The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ class toeplitz_matrix
+ {
+ public:
+
+ /**
+ * @brief The default constructor. Does not allocate any memory.
+ *
+ */
+ explicit toeplitz_matrix()
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+ /** @brief Creates the matrix with the given size
+ *
+ * @param rows Number of rows of the matrix
+ * @param cols Number of columns of the matrix
+ */
+ explicit toeplitz_matrix(std::size_t rows, std::size_t cols) : elements_(rows * 2)
+ {
+ assert(rows == cols && "Toeplitz matrix must be square!");
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+
+ /** @brief Resizes the matrix.
+ * Existing entries can be preserved
+ *
+ * @param sz New size of matrix
+ * @param preserve If true, existing values are preserved.
+ */
+ void resize(size_t sz, bool preserve = true) {
+ elements_.resize(sz * 2, preserve);
+ }
+
+ /** @brief Returns the OpenCL handle
+ *
+ * @return OpenCL handle
+ */
+ viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+ /**
+ * @brief Returns an internal viennacl::vector, which represents a Toeplitz matrix elements
+ *
+ */
+ viennacl::vector<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+ viennacl::vector<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+
+ /**
+ * @brief Returns the number of rows of the matrix
+ */
+ std::size_t size1() const { return elements_.size() / 2; }
+
+ /**
+ * @brief Returns the number of columns of the matrix
+ */
+ std::size_t size2() const { return elements_.size() / 2; }
+
+ /** @brief Returns the internal size of matrix representtion.
+ * Usually required for launching OpenCL kernels only
+ *
+ * @return Internal size of matrix representation
+ */
+ std::size_t internal_size() const { return elements_.internal_size(); }
+
+
+ /**
+ * @brief Read-write access to a single element of the matrix
+ *
+ * @param row_index Row index of accessed element
+ * @param col_index Column index of accessed element
+ * @return Proxy for matrix entry
+ */
+ entry_proxy<SCALARTYPE> operator()(std::size_t row_index, std::size_t col_index)
+ {
+ assert(row_index < size1() && col_index < size2() && "Invalid access");
+
+ int index = static_cast<int>(col_index) - static_cast<int>(row_index);
+
+ if (index < 0)
+ index = -index;
+ else if
+ (index > 0) index = 2 * size1() - index;
+ return elements_[index];
+ }
+
+
+ /**
+ * @brief += operation for Toeplitz matrices
+ *
+ * @param that Matrix which will be added
+ * @return Result of addition
+ */
+ toeplitz_matrix<SCALARTYPE, ALIGNMENT>& operator +=(toeplitz_matrix<SCALARTYPE, ALIGNMENT>& that) {
+ elements_ += that.elements();
+ return *this;
+ }
+
+ private:
+ toeplitz_matrix(toeplitz_matrix const & t) {}
+ toeplitz_matrix & operator=(toeplitz_matrix const & t) {}
+
+
+ viennacl::vector<SCALARTYPE, ALIGNMENT> elements_;
+ };
+
+ /** @brief Copies a Toeplitz matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param cpu_vec A std::vector on the host.
+ * @param gpu_mat A toeplitz_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(std::vector<SCALARTYPE> const & cpu_vec, toeplitz_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat)
+ {
+ std::size_t size = gpu_mat.size1();
+ assert((size * 2 - 1) == cpu_vec.size() && "Size mismatch");
+ std::vector<SCALARTYPE> rvrs(cpu_vec.size());
+ std::copy(cpu_vec.begin(), cpu_vec.end(), rvrs.begin());
+ std::reverse(rvrs.begin(), rvrs.end());
+
+ std::vector<SCALARTYPE> tmp(size * 2);
+ std::copy(rvrs.begin() + size - 1, rvrs.end(), tmp.begin());
+ std::copy(rvrs.begin(), rvrs.begin() + size - 1, tmp.begin() + size + 1);
+ tmp[size] = 0.0;
+ copy(tmp, gpu_mat.elements());
+ }
+
+ /** @brief Copies a Toeplitz matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+ *
+ *
+ * @param gpu_mat A toeplitz_matrix from ViennaCL
+ * @param cpu_vec A std::vector on the host.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(toeplitz_matrix<SCALARTYPE, ALIGNMENT> const & gpu_mat, std::vector<SCALARTYPE> & cpu_vec)
+ {
+ std::size_t size = gpu_mat.size1();
+ assert((size * 2 - 1) == cpu_vec.size() && "Size mismatch");
+ std::vector<SCALARTYPE> tmp(size * 2);
+ copy(gpu_mat.elements(), tmp);
+ std::reverse(tmp.begin(), tmp.end());
+
+ std::copy(tmp.begin(), tmp.begin() + size - 1, cpu_vec.begin() + size);
+ std::copy(tmp.begin() + size, tmp.end(), cpu_vec.begin());
+
+ }
+
+ /** @brief Copies a Toeplitz matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+ *
+ *
+ * @param tep_src A toeplitz_matrix from ViennaCL
+ * @param com_dst A matrix-like object
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(toeplitz_matrix<SCALARTYPE, ALIGNMENT> const & tep_src, MATRIXTYPE & com_dst)
+ {
+ std::size_t size = tep_src.size1();
+ assert(size == com_dst.size1() && "Size mismatch");
+ assert(size == com_dst.size2() && "Size mismatch");
+ std::vector<SCALARTYPE> tmp(tep_src.size1() * 2 - 1);
+ copy(tep_src, tmp);
+
+ for(std::size_t i = 0; i < size; i++)
+ for(std::size_t j = 0; j < size; j++)
+ com_dst(i, j) = tmp[static_cast<int>(j) - static_cast<int>(i) + static_cast<int>(size) - 1];
+ }
+
+ /** @brief Copies a the matrix-like object to the Toeplitz matrix from the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param com_src A std::vector on the host
+ * @param tep_dst A toeplitz_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(MATRIXTYPE const & com_src, toeplitz_matrix<SCALARTYPE, ALIGNMENT>& tep_dst)
+ {
+ std::size_t size = tep_dst.size1();
+ assert(size == com_src.size1() && "Size mismatch");
+ assert(size == com_src.size2() && "Size mismatch");
+
+ std::vector<SCALARTYPE> tmp(2*size - 1);
+
+ for(int i = size - 1; i >= 0; i--)
+ tmp[size - i - 1] = com_src(i, 0);
+
+ for(std::size_t i = 1; i < size; i++)
+ tmp[size + i - 1] = com_src(0, i);
+
+ copy(tmp, tep_dst);
+ }
+
+ /*template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(toeplitz_matrix<SCALARTYPE, ALIGNMENT>& mat,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT>& vec,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT>& result) {
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tep(mat.elements().size() * 2);
+ fft::real_to_complex(mat.elements(), tep, mat.elements().size());
+
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp(vec.size() * 4);
+ viennacl::vector<SCALARTYPE, VECTOR_ALIGNMENT> tmp2(vec.size() * 4);
+
+ tmp.clear();
+ copy(vec, tmp);
+ fft::real_to_complex(tmp, tmp2, vec.size() * 2);
+ fft::convolve(tep, tmp2, tmp);
+ fft::complex_to_real(tmp, tmp2, vec.size() * 2);
+ copy(tmp2.begin(), tmp2.begin() + vec.size(), result.begin());
+ }*/
+
+ /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
+ *
+ * @param s STL output stream
+ * @param gpu_matrix A ViennaCL Toeplitz matrix
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ std::ostream & operator<<(std::ostream & s, toeplitz_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+ {
+ std::size_t size = gpu_matrix.size1();
+ std::vector<SCALARTYPE> tmp(2*size - 1);
+ copy(gpu_matrix, tmp);
+ s << "[" << size << "," << size << "](";
+
+ for(std::size_t i = 0; i < size; i++) {
+ s << "(";
+ for(std::size_t j = 0; j < size; j++) {
+ s << tmp[(int)j - (int)i + (int)size - 1];
+ //s << (int)i - (int)j;
+ if(j < (size - 1)) s << ",";
+ }
+ s << ")";
+ }
+ s << ")";
+ return s;
+ }
+
+}
+
+#endif // _VIENNACL_TOEPLITZ_MATRIX_HPP
diff --git a/viennacl/tools/adapter.hpp b/viennacl/tools/adapter.hpp
index 458d1a4..c544a24 100644
--- a/viennacl/tools/adapter.hpp
+++ b/viennacl/tools/adapter.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_ADAPTER_HPP_
+#define VIENNACL_TOOLS_ADAPTER_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_TOOLS_ADAPTER_HPP_
-#define _VIENNACL_TOOLS_ADAPTER_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file adapter.hpp
@brief Adapter classes for sparse matrices made of the STL type std::vector<std::map<unsigned int, SCALARTYPE> >
@@ -49,13 +51,14 @@ namespace viennacl
public:
typedef self_type iterator1;
typedef self_type iterator2;
+ typedef std::size_t size_type;
const_sparse_matrix_adapted_iterator(std::vector<std::map<unsigned int, SCALARTYPE> > const & mat, int i, int j)
: _mat(mat), _i(i), _j(j)
{
if (i < 0) //reverse iterator end
{
- // iter2 = _mat[0].rend(); //reverse iterator end
+ //iter2 = _mat[0].rend(); //reverse iterator end
}
else //_i is valid
{
@@ -65,16 +68,18 @@ namespace viennacl
}
else //_j is valid
{
- int mat_size = _mat.size();
- if (_i < mat_size && _j < mat_size )
+ if (_i < _mat.size() && _mat[i].size() > 0 )
{
- //TODO: Start at entry j, not at the begin
- iter2 = _mat[i].begin();
+ //TODO: Start at entry j, not at the beginning
+ if (static_cast<int>(_mat[i].rbegin()->first) < j)
+ iter2 = _mat[i].end();
+ else
+ iter2 = _mat[i].begin();
}
- else if (_i < mat_size && _j >= mat_size )
+ else if (_i < _mat.size() && _mat[i].size() == 0)
iter2 = _mat[i].end();
else //i is out of range -> end iterator requested
- iter2 = _mat[_mat.size() - 1].end(); //forward iterator end
+ iter2 = _mat.back().end(); //forward iterator end
}
}
}
@@ -133,6 +138,7 @@ namespace viennacl
return (_i == other._i);
return (iter2 == other.iter2);
}
+
bool operator!=(self_type const & other) const { return !(*this == other); }
int index1() const { return _i; }
@@ -146,18 +152,21 @@ namespace viennacl
const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true> begin() const
{
- return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, iter2->first);
+ return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, 0);
}
const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true> end() const
{
- return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, static_cast<unsigned int>(_mat.size()));
+ int end_ = static_cast<int>(_mat[_i].size());
+ if (end_ > 0)
+ end_ = _mat[_i].rbegin()->first;
+ return const_sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1, true>(_mat, _i, end_ + 1);
}
private:
std::vector<std::map<unsigned int, SCALARTYPE> > const & _mat;
typename std::map<unsigned int, SCALARTYPE>::const_iterator iter2;
- int _i;
- int _j;
+ size_type _i;
+ size_type _j;
};
/** @brief Adapts a constant sparse matrix type made up from std::vector<std::map<unsigned int, SCALARTYPE> > to basic ublas-compatibility.
@@ -173,13 +182,15 @@ namespace viennacl
typedef const_sparse_matrix_adapted_iterator<SCALARTYPE, true, false> const_reverse_iterator1;
typedef SCALARTYPE value_type;
+ typedef std::size_t size_type;
const_sparse_matrix_adapter(std::vector<std::map<unsigned int, SCALARTYPE> > const & mat)
: _mat(mat) {};
- unsigned int size1() const { return static_cast<unsigned int>(_mat.size()); }
- unsigned int size2() const { return static_cast<unsigned int>(_mat.size()); } //we allow only square matrices
-
+ size_type size1() const { return _mat.size(); }
+ size_type size2() const { return _mat.size(); }
+ //size_type size2() const { return (_mat.size() > 0) ? _mat.back().size() : 0; }
+
const_iterator1 begin1() const { return const_iterator1(_mat, 0, 0); }
const_iterator1 end1() const { return const_iterator1(_mat, size1(), size2()); }
@@ -187,8 +198,8 @@ namespace viennacl
const_reverse_iterator1 rend1() const { return const_reverse_iterator1(_mat, -1, size2()); }
const_iterator2 begin2() const { return const_iterator2(_mat, 0, 0); }
- const_iterator2 end2() const { return const_iterator2(_mat, 0, size2()); }
-
+ const_iterator2 end2() const { return const_iterator2(_mat, size1(), size2()); }
+
SCALARTYPE operator()(unsigned int i, unsigned int j) const
{
typedef typename std::map<unsigned int, SCALARTYPE>::const_iterator col_iterator;
@@ -236,15 +247,18 @@ namespace viennacl
}
else //_j is valid
{
- if (_i < _mat.size() && _j < _mat.size() )
+ if (_i < _mat.size() && _mat[i].size() > 0 )
{
- //TODO: Start at entry j, not at the begin
- iter2 = _mat[i].begin();
+ //TODO: Start at entry j, not at the beginning
+ if (static_cast<int>(_mat[i].rbegin()->first) < j)
+ iter2 = _mat[i].end();
+ else
+ iter2 = _mat[i].begin();
}
- else if (_i < _mat.size() && _j >= _mat.size())
+ else if (_i < _mat.size() && _mat[i].size() == 0)
iter2 = _mat[i].end();
else //i is out of range -> end iterator requested
- iter2 = _mat[_mat.size() - 1].end(); //forward iterator end
+ iter2 = _mat.back().end(); //forward iterator end
}
}
}
@@ -300,11 +314,14 @@ namespace viennacl
sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1> begin() const
{
- return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, iter2->first);
+ return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, 0);
}
sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1> end() const
{
- return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, static_cast<int>(_mat.size()));
+ int end_ = static_cast<int>(_mat[_i].size());
+ if (end_ > 0)
+ end_ = _mat[_i].rbegin()->first;
+ return sparse_matrix_adapted_iterator<SCALARTYPE, !is_iterator1>(_mat, _i, end_ + 1);
}
private:
@@ -332,10 +349,10 @@ namespace viennacl
: BaseType(mat), _mat(mat) { };
iterator1 begin1() { return iterator1(_mat, 0, 0); }
- iterator1 end1() { return iterator1(_mat, _mat.size(), _mat.size()); }
+ iterator1 end1() { return iterator1(_mat, _mat.size(), _mat.back().size()); }
iterator2 begin2() { return iterator2(_mat, 0, 0); }
- iterator2 end2() { return iterator2(_mat, _mat.size(), _mat.size()); }
+ iterator2 end2() { return iterator2(_mat, _mat.size(), _mat.back().size()); }
SCALARTYPE & operator()(unsigned int i, unsigned int j) { return _mat[i][j]; }
@@ -357,8 +374,8 @@ namespace viennacl
size_t size1() const { return _mat.size(); } //Note: Due to name hiding it is not sufficient to have it in the base class
//assume a square matrix
- size_t size2() { return _mat.size(); }
- size_t size2() const { return _mat.size(); } //Note: Due to name hiding it is not sufficient to have it in the base class
+ size_t size2() { return (_mat.size() > 0) ? (_mat.back().size() > 0 ? _mat.back().size() : _mat.size()) : 0; }
+ size_t size2() const { return (_mat.size() > 0) ? (_mat.back().size() > 0 ? _mat.back().size() : _mat.size()) : 0; } //Note: Due to name hiding it is not sufficient to have it in the base class
private:
std::vector<std::map<unsigned int, SCALARTYPE> > & _mat;
diff --git a/viennacl/tools/entry_proxy.hpp b/viennacl/tools/entry_proxy.hpp
index 5b00674..af5d7fa 100644
--- a/viennacl/tools/entry_proxy.hpp
+++ b/viennacl/tools/entry_proxy.hpp
@@ -1,23 +1,26 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_TOOLS_ENTRY_PROXY_HPP_
+#define VIENNACL_TOOLS_ENTRY_PROXY_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file entry_proxy.hpp
@brief A proxy class for entries in a vector
*/
-#ifndef _VIENNACL_TOOLS_ENTRY_PROXY_HPP_
-#define _VIENNACL_TOOLS_ENTRY_PROXY_HPP_
#include "viennacl/forwards.h"
#include "viennacl/ocl/backend.hpp"
diff --git a/viennacl/tools/matrix_kernel_class_deducer.hpp b/viennacl/tools/matrix_kernel_class_deducer.hpp
index 7bbe602..0cd256d 100644
--- a/viennacl/tools/matrix_kernel_class_deducer.hpp
+++ b/viennacl/tools/matrix_kernel_class_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
+#ifndef VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_KERNEL_CLASS_DEDUCER_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file matrix_kernel_class_deducer.hpp
@brief Implementation of a helper meta class for deducing the correct kernels for the supplied matrix
@@ -50,6 +52,14 @@ namespace viennacl
typedef viennacl::linalg::kernels::matrix_col<SCALARTYPE, ALIGNMENT> ResultType;
};
+ //support for matrix range:
+ template <typename T>
+ struct MATRIX_KERNEL_CLASS_DEDUCER< viennacl::matrix_range<T> >
+ {
+ typedef typename MATRIX_KERNEL_CLASS_DEDUCER<T>::ResultType ResultType;
+ };
+
+
}
}
diff --git a/viennacl/tools/matrix_prod_kernel_class_deducer.hpp b/viennacl/tools/matrix_prod_kernel_class_deducer.hpp
index 010ba45..9438be2 100644
--- a/viennacl/tools/matrix_prod_kernel_class_deducer.hpp
+++ b/viennacl/tools/matrix_prod_kernel_class_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_PROD_KERNEL_CLASS_DEDUCER_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file matrix_prod_kernel_class_deducer.hpp
@brief Implementation of a helper meta class for deducing the correct kernels for matrix-matrix products
diff --git a/viennacl/tools/matrix_size_deducer.hpp b/viennacl/tools/matrix_size_deducer.hpp
index d03cbd5..b572a5a 100644
--- a/viennacl/tools/matrix_size_deducer.hpp
+++ b/viennacl/tools/matrix_size_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_SIZE_DEDUCER_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file matrix_size_deducer.hpp
@brief Helper implementations that deduce the dimensions of the supplied matrix-valued expressions.
diff --git a/viennacl/tools/matrix_solve_kernel_class_deducer.hpp b/viennacl/tools/matrix_solve_kernel_class_deducer.hpp
index 500ad09..31dcc9b 100644
--- a/viennacl/tools/matrix_solve_kernel_class_deducer.hpp
+++ b/viennacl/tools/matrix_solve_kernel_class_deducer.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
+#ifndef VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
+#define VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
-#ifndef _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
-#define _VIENNACL_TOOLS_MATRIX_SOLVE_KERNEL_CLASS_DEDUCER_HPP_
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file matrix_solve_kernel_class_deducer.hpp
@brief Implementation of a helper meta class for deducing the correct kernels for the dense matrix solver
diff --git a/viennacl/tools/tools.hpp b/viennacl/tools/tools.hpp
index e908aef..43699ba 100644
--- a/viennacl/tools/tools.hpp
+++ b/viennacl/tools/tools.hpp
@@ -1,19 +1,21 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
-
-#ifndef _VIENNACL_TOOLS_HPP_
-#define _VIENNACL_TOOLS_HPP_
+#ifndef VIENNACL_TOOLS_TOOLS_HPP_
+#define VIENNACL_TOOLS_TOOLS_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file tools.hpp
@brief Various little tools used here and there in ViennaCL.
@@ -47,137 +49,6 @@ namespace viennacl
{
namespace tools
{
- namespace traits
- {
-
- //Resize:
- template <typename MatrixType>
- void resize(MatrixType & matrix, size_t rows, size_t cols)
- {
- matrix.resize(rows, cols);
- }
-
- template <typename VectorType>
- void resize(VectorType & vec, size_t new_size)
- {
- vec.resize(new_size);
- }
-
- #ifdef VIENNACL_HAVE_UBLAS
- //ublas needs separate treatment:
- template <typename ScalarType>
- void resize(boost::numeric::ublas::compressed_matrix<ScalarType> & matrix,
- size_t rows,
- size_t cols)
- {
- matrix.resize(rows, cols, false); //Note: omitting third parameter leads to compile time error (not implemented in ublas <= 1.42)
- }
- #endif
-
-
- #ifdef VIENNACL_HAVE_MTL4
- template <typename ScalarType>
- void resize(mtl::compressed2D<ScalarType> & matrix,
- size_t rows,
- size_t cols)
- {
- matrix.change_dim(rows, cols);
- }
-
- template <typename ScalarType>
- void resize(mtl::dense_vector<ScalarType> & vec,
- size_t new_size)
- {
- vec.change_dim(new_size);
- }
- #endif
-
- //clear:
- template <typename VectorType>
- void clear(VectorType & vec)
- {
- vec.clear();
- }
-
- #ifdef VIENNACL_HAVE_EIGEN
- void clear(Eigen::VectorXf & vec) { for (int i=0; i<vec.size(); ++i) vec[i] = 0; }
- void clear(Eigen::VectorXd & vec) { for (int i=0; i<vec.size(); ++i) vec[i] = 0; }
- #endif
-
- #ifdef VIENNACL_HAVE_MTL4
- template <typename ScalarType>
- void clear(mtl::dense_vector<ScalarType> & vec)
- {
- for (typename mtl::dense_vector<ScalarType>::size_type i=0;
- i<vec.used_memory();
- ++i)
- vec[i] = 0;
- }
- #endif
-
-
- //size:
- template <typename VectorType>
- unsigned int size(VectorType & vec)
- {
- return vec.size();
- }
-
- #ifdef VIENNACL_HAVE_MTL4
- template <typename ScalarType>
- unsigned int size(mtl::dense_vector<ScalarType> const & vec) { return vec.used_memory(); }
- #endif
-
- }
-
-
-
- namespace result_of
- {
- //value type:
- template <typename T>
- struct value_type
- {
- typedef typename T::value_type type;
- };
-
- #ifdef VIENNACL_HAVE_EIGEN
- template <>
- struct value_type<Eigen::MatrixXf>
- {
- typedef Eigen::MatrixXf::RealScalar type;
- };
-
- template <>
- struct value_type<Eigen::MatrixXd>
- {
- typedef Eigen::MatrixXd::RealScalar type;
- };
-
- template <typename ScalarType, int option>
- struct value_type<Eigen::SparseMatrix<ScalarType, option> >
- {
- typedef ScalarType type;
- };
-
- template <>
- struct value_type<Eigen::VectorXf>
- {
- typedef Eigen::VectorXf::RealScalar type;
- };
-
- template <>
- struct value_type<Eigen::VectorXd>
- {
- typedef Eigen::VectorXd::RealScalar type;
- };
-
- #endif
-
- }
-
-
-
/** @brief Supply suitable increment functions for the iterators: */
template <class SCALARTYPE, typename F, unsigned int ALIGNMENT>
@@ -193,17 +64,6 @@ namespace viennacl
};
- /** @brief Simple enable-if variant that uses the SFINAE pattern */
- template <bool b, class T = void>
- struct enable_if
- {
- typedef T type;
- };
-
- template <class T>
- struct enable_if<false, T> {};
-
-
/** @brief A guard that checks whether the floating point type of GPU types is either float or double */
template <typename T>
struct CHECK_SCALAR_TEMPLATE_ARGUMENT
@@ -389,6 +249,13 @@ namespace viennacl
};
template <typename ScalarType, unsigned int Amat, unsigned int A>
+ struct VECTOR_SIZE_DEDUCER<const viennacl::circulant_matrix<ScalarType, Amat>, const viennacl::vector<ScalarType, A>, viennacl::op_prod>
+ {
+ static size_t size(const viennacl::circulant_matrix<ScalarType, Amat> & lhs,
+ const viennacl::vector<ScalarType, A> & rhs) { return lhs.size1(); }
+ };
+
+ template <typename ScalarType, unsigned int Amat, unsigned int A>
struct VECTOR_SIZE_DEDUCER<const viennacl::compressed_matrix<ScalarType, Amat>, const viennacl::vector<ScalarType, A>, viennacl::op_prod>
{
static size_t size(const viennacl::compressed_matrix<ScalarType, Amat> & lhs,
diff --git a/viennacl/traits/clear.hpp b/viennacl/traits/clear.hpp
new file mode 100644
index 0000000..d6c3479
--- /dev/null
+++ b/viennacl/traits/clear.hpp
@@ -0,0 +1,72 @@
+#ifndef VIENNACL_TRAITS_CLEAR_HPP_
+#define VIENNACL_TRAITS_CLEAR_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file viennacl/traits/clear.hpp
+ @brief Generic clear functionality for different vector and matrix types
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+#ifdef VIENNACL_HAVE_UBLAS
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+#include "viennacl/traits/size.hpp"
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+ namespace traits
+ {
+
+ //clear:
+ template <typename VectorType>
+ void clear(VectorType & vec)
+ {
+ typedef typename viennacl::result_of::size_type<VectorType>::type size_type;
+
+ for (size_type i=0; i<viennacl::traits::size(vec); ++i)
+ vec[i] = 0; //TODO: Quantity access can also be wrapped...
+ }
+
+ template <typename ScalarType, unsigned int ALIGNMENT>
+ void clear(viennacl::vector<ScalarType, ALIGNMENT> & vec)
+ {
+ vec.clear();
+ }
+ } //namespace traits
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/traits/fill.hpp b/viennacl/traits/fill.hpp
new file mode 100644
index 0000000..21e6636
--- /dev/null
+++ b/viennacl/traits/fill.hpp
@@ -0,0 +1,69 @@
+#ifndef VIENNACL_TRAITS_FILL_HPP_
+#define VIENNACL_TRAITS_FILL_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file fill.hpp
+ @brief Generic fill functionality for different matrix types
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+#include "viennacl/meta/result_of.hpp"
+
+#ifdef VIENNACL_HAVE_EIGEN
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+
+ namespace traits
+ {
+ //
+ // Resize: Change the size of vectors and matrices
+ //
+ template <typename MatrixType, typename SCALARTYPE>
+ void fill(MatrixType & matrix, std::size_t row_index, std::size_t col_index, SCALARTYPE value)
+ {
+ matrix(row_index, col_index) = value;
+ }
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ template <typename T, int options, typename SCALARTYPE>
+ inline void fill(Eigen::SparseMatrix<T, options> & m,
+ std::size_t row_index,
+ std::size_t col_index,
+ SCALARTYPE value
+ )
+ {
+ m.fill(row_index, col_index) = value;
+ }
+ #endif
+
+
+ } //namespace traits
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/traits/handle.hpp b/viennacl/traits/handle.hpp
new file mode 100644
index 0000000..1d08741
--- /dev/null
+++ b/viennacl/traits/handle.hpp
@@ -0,0 +1,75 @@
+#ifndef VIENNACL_TRAITS_HANDLE_HPP_
+#define VIENNACL_TRAITS_HANDLE_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file traits/handle.hpp
+ @brief Extracts the underlying OpenCL handle from a vector, a matrix, an expression etc.
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+#ifdef __APPLE__
+#include <OpenCL/cl.h>
+#else
+#include <CL/cl.h>
+#endif
+
+namespace viennacl
+{
+ namespace traits
+ {
+
+ // Returns the OpenCL handle of a ViennaCL object
+ template <typename T>
+ viennacl::ocl::handle<cl_mem> handle(T & obj)
+ {
+ return obj.handle();
+ }
+
+ template <typename T>
+ viennacl::ocl::handle<cl_mem> handle(viennacl::vector_range<T> & obj)
+ {
+ return handle(obj.get());
+ }
+
+ template <typename T>
+ viennacl::ocl::handle<cl_mem> handle(viennacl::vector_range<T> const & obj)
+ {
+ return handle(obj.get());
+ }
+
+ template <typename T>
+ viennacl::ocl::handle<cl_mem> handle(viennacl::matrix_range<T> & obj)
+ {
+ return handle(obj.get());
+ }
+
+ template <typename T>
+ viennacl::ocl::handle<cl_mem> handle(viennacl::matrix_range<T> const & obj)
+ {
+ return handle(obj.get());
+ }
+
+ } //namespace traits
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/traits/size.hpp b/viennacl/traits/size.hpp
new file mode 100644
index 0000000..b9a7da5
--- /dev/null
+++ b/viennacl/traits/size.hpp
@@ -0,0 +1,225 @@
+#ifndef VIENNACL_TRAITS_SIZE_HPP_
+#define VIENNACL_TRAITS_SIZE_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file size.hpp
+ @brief Generic size and resize functionality for different vector and matrix types
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+#include "viennacl/meta/result_of.hpp"
+
+#ifdef VIENNACL_HAVE_UBLAS
+#include <boost/numeric/ublas/matrix_sparse.hpp>
+#include <boost/numeric/ublas/matrix.hpp>
+#endif
+
+#ifdef VIENNACL_HAVE_EIGEN
+#include <Eigen/Core>
+#include <Eigen/Sparse>
+#endif
+
+#ifdef VIENNACL_HAVE_MTL4
+#include <boost/numeric/mtl/mtl.hpp>
+#endif
+
+#include <vector>
+#include <map>
+
+namespace viennacl
+{
+
+ namespace traits
+ {
+ //
+ // Resize: Change the size of vectors and matrices
+ //
+ template <typename MatrixType>
+ void resize(MatrixType & matrix, size_t rows, size_t cols)
+ {
+ matrix.resize(rows, cols);
+ }
+
+ template <typename VectorType>
+ void resize(VectorType & vec, size_t new_size)
+ {
+ vec.resize(new_size);
+ }
+
+ #ifdef VIENNACL_HAVE_UBLAS
+ //ublas needs separate treatment:
+ template <typename ScalarType>
+ void resize(boost::numeric::ublas::compressed_matrix<ScalarType> & matrix,
+ size_t rows,
+ size_t cols)
+ {
+ matrix.resize(rows, cols, false); //Note: omitting third parameter leads to compile time error (not implemented in ublas <= 1.42)
+ }
+ #endif
+
+
+ #ifdef VIENNACL_HAVE_MTL4
+ template <typename ScalarType>
+ void resize(mtl::compressed2D<ScalarType> & matrix,
+ size_t rows,
+ size_t cols)
+ {
+ matrix.change_dim(rows, cols);
+ }
+
+ template <typename ScalarType>
+ void resize(mtl::dense_vector<ScalarType> & vec,
+ size_t new_size)
+ {
+ vec.change_dim(new_size);
+ }
+ #endif
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ inline void resize(Eigen::MatrixXf & m,
+ std::size_t new_rows,
+ std::size_t new_cols)
+ {
+ m.resize(new_rows, new_cols);
+ }
+
+ inline void resize(Eigen::MatrixXd & m,
+ std::size_t new_rows,
+ std::size_t new_cols)
+ {
+ m.resize(new_rows, new_cols);
+ }
+
+ template <typename T, int options>
+ inline void resize(Eigen::SparseMatrix<T, options> & m,
+ std::size_t new_rows,
+ std::size_t new_cols)
+ {
+ m.resize(new_rows, new_cols);
+ }
+
+ inline void resize(Eigen::VectorXf & v,
+ std::size_t new_size)
+ {
+ v.resize(new_size);
+ }
+
+ inline void resize(Eigen::VectorXd & v,
+ std::size_t new_size)
+ {
+ v.resize(new_size);
+ }
+ #endif
+
+
+ //
+ // size: Returns the length of vectors
+ //
+ template <typename VectorType>
+ typename result_of::size_type<VectorType>::type size(VectorType const & vec)
+ {
+ return vec.size();
+ }
+
+ #ifdef VIENNACL_HAVE_MTL4
+ template <typename ScalarType>
+ typename result_of::size_type< mtl::dense_vector<ScalarType> >::type
+ size(mtl::dense_vector<ScalarType> const & vec) { return vec.used_memory(); }
+ #endif
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ inline std::size_t size(Eigen::VectorXf const & v) { return v.rows(); }
+ inline std::size_t size(Eigen::VectorXd const & v) { return v.rows(); }
+ #endif
+
+ //
+ // size1: No. of rows for matrices
+ //
+ template <typename MatrixType>
+ typename result_of::size_type<MatrixType>::type
+ size1(MatrixType const & mat) { return mat.size1(); }
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ inline std::size_t size1(Eigen::MatrixXf const & m) { return m.rows(); }
+ inline std::size_t size1(Eigen::MatrixXd const & m) { return m.rows(); }
+ template <typename T, int options>
+ inline std::size_t size1(Eigen::SparseMatrix<T, options> & m) { return m.rows(); }
+ #endif
+
+ //
+ // size2: No. of columns for matrices
+ //
+ template <typename MatrixType>
+ typename result_of::size_type<MatrixType>::type
+ size2(MatrixType const & mat) { return mat.size2(); }
+
+ #ifdef VIENNACL_HAVE_EIGEN
+ inline std::size_t size2(Eigen::MatrixXf const & m) { return m.cols(); }
+ inline std::size_t size2(Eigen::MatrixXd const & m) { return m.cols(); }
+ template <typename T, int options>
+ inline std::size_t size2(Eigen::SparseMatrix<T, options> & m) { return m.cols(); }
+ #endif
+
+ //
+ // internal_size: Returns the internal (padded) length of vectors
+ //
+ template <typename VectorType>
+ typename result_of::size_type<VectorType>::type
+ internal_size(VectorType const & vec)
+ {
+ return vec.internal_size();
+ }
+
+ template <typename VectorType>
+ typename result_of::size_type<VectorType>::type
+ internal_size(viennacl::vector_range<VectorType> const & vec)
+ {
+ return vec.get().internal_size();
+ }
+
+ //
+ // internal_size1: No. of internal (padded) rows for matrices
+ //
+ template <typename MatrixType>
+ typename result_of::size_type<MatrixType>::type
+ internal_size1(MatrixType const & mat) { return mat.internal_size1(); }
+
+ template <typename MatrixType>
+ typename result_of::size_type<MatrixType>::type
+ internal_size1(viennacl::matrix_range<MatrixType> const & mat) { return mat.get().internal_size1(); }
+
+ //
+ // internal_size2: No. of internal (padded) columns for matrices
+ //
+ template <typename MatrixType>
+ typename result_of::size_type<MatrixType>::type
+ internal_size2(MatrixType const & mat) { return mat.internal_size2(); }
+
+ template <typename MatrixType>
+ typename result_of::size_type<MatrixType>::type
+ internal_size2(viennacl::matrix_range<MatrixType> const & mat) { return mat.get().internal_size2(); }
+
+
+ } //namespace traits
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/traits/start.hpp b/viennacl/traits/start.hpp
new file mode 100644
index 0000000..eac447b
--- /dev/null
+++ b/viennacl/traits/start.hpp
@@ -0,0 +1,97 @@
+#ifndef VIENNACL_TRAITS_START_HPP_
+#define VIENNACL_TRAITS_START_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file start.hpp
+ @brief Extracts the underlying OpenCL start index handle from a vector, a matrix, an expression etc.
+*/
+
+#include <string>
+#include <fstream>
+#include <sstream>
+#include "viennacl/forwards.h"
+
+namespace viennacl
+{
+ namespace traits
+ {
+ //
+ // start: Mostly for vectors
+ //
+
+ // Default: Try to get the start index from the .start() member function
+ template <typename T>
+ typename result_of::size_type<T>::type
+ start(T const & obj)
+ {
+ return obj.start();
+ }
+
+ //ViennaCL vector leads to start index 0:
+ template <typename ScalarType, unsigned int ALIGNMENT>
+ typename result_of::size_type<viennacl::vector<ScalarType, ALIGNMENT> >::type
+ start(viennacl::vector<ScalarType, ALIGNMENT> const & v)
+ {
+ return 0;
+ }
+
+ //
+ // start1: Row start index
+ //
+
+ // Default: Try to get the start index from the .start1() member function
+ template <typename T>
+ typename result_of::size_type<T>::type
+ start1(T const & obj)
+ {
+ return obj.start1();
+ }
+
+ //ViennaCL matrix leads to start index 0:
+ template <typename ScalarType, typename F, unsigned int ALIGNMENT>
+ typename result_of::size_type<viennacl::matrix<ScalarType, F, ALIGNMENT> >::type
+ start1(viennacl::matrix<ScalarType, F, ALIGNMENT> const & v)
+ {
+ return 0;
+ }
+
+
+ //
+ // start2: Column start index
+ //
+ template <typename T>
+ typename result_of::size_type<T>::type
+ start2(T const & obj)
+ {
+ return obj.start2();
+ }
+
+ //ViennaCL matrix leads to start index 0:
+ template <typename ScalarType, typename F, unsigned int ALIGNMENT>
+ typename result_of::size_type<viennacl::matrix<ScalarType, F, ALIGNMENT> >::type
+ start2(viennacl::matrix<ScalarType, F, ALIGNMENT> const & v)
+ {
+ return 0;
+ }
+
+
+ } //namespace traits
+} //namespace viennacl
+
+
+#endif
diff --git a/viennacl/vandermonde_matrix.hpp b/viennacl/vandermonde_matrix.hpp
new file mode 100644
index 0000000..6da7c9c
--- /dev/null
+++ b/viennacl/vandermonde_matrix.hpp
@@ -0,0 +1,241 @@
+#ifndef VIENNACL_VANDERMONDE_MATRIX_HPP
+#define VIENNACL_VANDERMONDE_MATRIX_HPP
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+#include <cmath>
+
+/** @file vandermonde_matrix.hpp
+ @brief Implementation of the vandermonde_matrix class for efficient manipulation of Vandermonde matrices. Experimental in 1.2.x.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/vector.hpp"
+#include "viennacl/ocl/context.hpp"
+
+#include "viennacl/fft.hpp"
+
+#include "viennacl/linalg/vandermonde_matrix_operations.hpp"
+
+namespace viennacl {
+ /** @brief A Vandermonde matrix class
+ *
+ * @tparam SCALARTYPE The underlying scalar type (either float or double)
+ * @tparam ALIGNMENT The internal memory size is given by (size()/ALIGNMENT + 1) * ALIGNMENT. ALIGNMENT must be a power of two. Best values or usually 4, 8 or 16, higher values are usually a waste of memory.
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ class vandermonde_matrix
+ {
+ public:
+ /**
+ * @brief The default constructor. Does not allocate any memory.
+ *
+ */
+ explicit vandermonde_matrix()
+ {
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+ /**
+ * @brief Creates the matrix with the given size
+ *
+ * @param rows Number of rows of the matrix
+ * @param cols Number of columns of the matrix
+ */
+ explicit vandermonde_matrix(std::size_t rows, std::size_t cols) : elements_(rows)
+ {
+ assert(rows == cols && "Vandermonde matrix must be square in this release!");
+ viennacl::linalg::kernels::fft<SCALARTYPE, 1>::init();
+ }
+
+ /** @brief Resizes the matrix.
+ * Existing entries can be preserved
+ *
+ * @param sz New size of matrix
+ * @param preserve If true, existing values are preserved.
+ */
+ void resize(std::size_t sz, bool preserve = true) {
+ elements_.resize(sz, preserve);
+ }
+
+ /** @brief Returns the OpenCL handle
+ *
+ * @return OpenCL handle
+ */
+ viennacl::ocl::handle<cl_mem> handle() const { return elements_.handle(); }
+
+ /**
+ * @brief Returns an internal viennacl::vector, which represents a Vandermonde matrix elements
+ *
+ */
+ viennacl::vector<SCALARTYPE, ALIGNMENT> & elements() { return elements_; }
+ viennacl::vector<SCALARTYPE, ALIGNMENT> const & elements() const { return elements_; }
+
+ /**
+ * @brief Returns the number of rows of the matrix
+ */
+ std::size_t size1() const { return elements_.size(); }
+
+ /**
+ * @brief Returns the number of columns of the matrix
+ */
+ std::size_t size2() const { return elements_.size(); }
+
+ /** @brief Returns the internal size of matrix representtion.
+ * Usually required for launching OpenCL kernels only
+ *
+ * @return Internal size of matrix representation
+ */
+ std::size_t internal_size() const { return elements_.internal_size(); }
+
+ /**
+ * @brief Read-write access to a base element of the matrix
+ *
+ * @param row_index Row index of accessed element
+ * @return Proxy for matrix entry
+ */
+ entry_proxy<SCALARTYPE> operator()(std::size_t row_index)
+ {
+ return elements_[row_index];
+ }
+
+ /**
+ * @brief Read access to a element of the matrix
+ *
+ * @param row_index Row index of accessed element
+ * @param col_index Column index of accessed element
+ * @return Proxy for matrix entry
+ */
+ SCALARTYPE operator()(std::size_t row_index, std::size_t col_index) const
+ {
+ assert(row_index < size1() && col_index < size2() && "Invalid access");
+
+ return pow(elements_[row_index], static_cast<int>(col_index));
+ }
+
+ private:
+ vandermonde_matrix(vandermonde_matrix const & t) {}
+ vandermonde_matrix & operator=(vandermonde_matrix const & t) {}
+
+ viennacl::vector<SCALARTYPE, ALIGNMENT> elements_;
+ };
+
+ /** @brief Copies a Vandermonde matrix from the std::vector to the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param cpu_vec A std::vector on the host.
+ * @param gpu_mat A vandermonde_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(std::vector<SCALARTYPE>& cpu_vec, vandermonde_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat)
+ {
+ assert(cpu_vec.size() == gpu_mat.size1() && "Size mismatch");
+ copy(cpu_vec, gpu_mat.elements());
+ }
+
+ /** @brief Copies a Vandermonde matrix from the OpenCL device (either GPU or multi-core CPU) to the std::vector
+ *
+ *
+ * @param gpu_mat A vandermonde_matrix from ViennaCL
+ * @param cpu_vec A std::vector on the host.
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT>
+ void copy(vandermonde_matrix<SCALARTYPE, ALIGNMENT>& gpu_mat, std::vector<SCALARTYPE>& cpu_vec)
+ {
+ assert(cpu_vec.size() == gpu_mat.size1() && "Size mismatch");
+ copy(gpu_mat.elements(), cpu_vec);
+ }
+
+ /** @brief Copies a Vandermonde matrix from the OpenCL device (either GPU or multi-core CPU) to the matrix-like object
+ *
+ *
+ * @param vander_src A vandermonde_matrix from ViennaCL
+ * @param com_dst A matrix-like object
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(vandermonde_matrix<SCALARTYPE, ALIGNMENT>& vander_src, MATRIXTYPE& com_dst)
+ {
+ std::size_t size = vander_src.size1();
+ assert(size == com_dst.size1() && "Size mismatch");
+ assert(size == com_dst.size2() && "Size mismatch");
+ std::vector<SCALARTYPE> tmp(size);
+ copy(vander_src, tmp);
+
+ for(std::size_t i = 0; i < size; i++) {
+ for(std::size_t j = 0; j < size; j++) {
+ com_dst(i, j) = pow(tmp[i], static_cast<int>(j));
+ }
+ }
+ }
+
+ /** @brief Copies a the matrix-like object to the Vandermonde matrix from the OpenCL device (either GPU or multi-core CPU)
+ *
+ *
+ * @param com_src A std::vector on the host
+ * @param vander_dst A vandermonde_matrix from ViennaCL
+ */
+ template <typename SCALARTYPE, unsigned int ALIGNMENT, typename MATRIXTYPE>
+ void copy(MATRIXTYPE& com_src, vandermonde_matrix<SCALARTYPE, ALIGNMENT>& vander_dst)
+ {
+ std::size_t size = vander_dst.size1();
+ assert(size == com_src.size1() && "Size mismatch");
+ assert(size == com_src.size2() && "Size mismatch");
+ std::vector<SCALARTYPE> tmp(size);
+
+ for(std::size_t i = 0; i < size; i++)
+ tmp[i] = com_src(i, 1);
+
+ copy(tmp, vander_dst);
+ }
+
+ /*template <typename SCALARTYPE, unsigned int ALIGNMENT, unsigned int VECTOR_ALIGNMENT>
+ void prod_impl(vandermonde_matrix<SCALARTYPE, ALIGNMENT>& mat,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT>& vec,
+ vector<SCALARTYPE, VECTOR_ALIGNMENT>& result) {
+ assert(mat.size1() == vec.size());
+
+ fft::vandermonde_prod<SCALARTYPE>(mat.handle(), vec.handle(), result.handle(), mat.size1());
+ } */
+
+ /** @brief Prints the matrix. Output is compatible to boost::numeric::ublas
+ *
+ * @param s STL output stream
+ * @param gpu_matrix A ViennaCL Vandermonde matrix
+ */
+ template<class SCALARTYPE, unsigned int ALIGNMENT>
+ std::ostream & operator<<(std::ostream& s, vandermonde_matrix<SCALARTYPE, ALIGNMENT>& gpu_matrix)
+ {
+ std::size_t size = gpu_matrix.size1();
+ std::vector<SCALARTYPE> tmp(size);
+ copy(gpu_matrix, tmp);
+ s << "[" << size << "," << size << "](\n";
+
+ for(std::size_t i = 0; i < size; i++) {
+ s << "(";
+ for(std::size_t j = 0; j < size; j++) {
+ s << pow(tmp[i], j);
+ if(j < (size - 1)) s << ",";
+ }
+ s << ")";
+ }
+ s << ")";
+ return s;
+ }
+
+}
+
+#endif // _VIENNACL_VANDERMONDE_MATRIX_HPP
diff --git a/viennacl/vector.hpp b/viennacl/vector.hpp
index 8162c4b..fd5971a 100644
--- a/viennacl/vector.hpp
+++ b/viennacl/vector.hpp
@@ -1,24 +1,27 @@
-/* =======================================================================
- Copyright (c) 2010, Institute for Microelectronics, TU Vienna.
- http://www.iue.tuwien.ac.at
- -----------------
- ViennaCL - The Vienna Computing Library
- -----------------
-
- authors: Karl Rupp rupp at iue.tuwien.ac.at
- Florian Rudolf flo.rudy+viennacl at gmail.com
- Josef Weinbub weinbub at iue.tuwien.ac.at
-
- license: MIT (X11), see file LICENSE in the ViennaCL base directory
-======================================================================= */
+#ifndef VIENNACL_VECTOR_HPP_
+#define VIENNACL_VECTOR_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
/** @file vector.hpp
@brief The vector type with operator-overloads and proxy classes is defined here.
Linear algebra operations such as norms and inner products are located in linalg/vector_operations.hpp
*/
-#ifndef _VIENNACL_VECTOR_HPP_
-#define _VIENNACL_VECTOR_HPP_
#include "viennacl/forwards.h"
#include "viennacl/ocl/backend.hpp"
@@ -60,7 +63,7 @@ namespace viennacl
RHS & rhs() const { return _rhs; }
/** @brief Returns the size of the result vector */
- unsigned int size() const { return viennacl::tools::VECTOR_SIZE_DEDUCER<LHS, RHS, OP>::size(_lhs, _rhs); }
+ std::size_t size() const { return viennacl::tools::VECTOR_SIZE_DEDUCER<LHS, RHS, OP>::size(_lhs, _rhs); }
private:
/** @brief The left hand side operand */
@@ -126,13 +129,13 @@ namespace viennacl
difference_type operator-(self_type const & other) const { difference_type result = index_; return result - other.index_; }
self_type operator+(difference_type diff) const { return self_type(elements_, index_ + diff); }
- unsigned int index() const { return index_; }
+ std::size_t index() const { return index_; }
viennacl::ocl::handle<cl_mem> const & handle() const { return elements_; }
protected:
/** @brief The index of the entry the iterator is currently pointing to */
viennacl::ocl::handle<cl_mem> elements_;
- unsigned int index_;
+ std::size_t index_;
};
@@ -162,7 +165,7 @@ namespace viennacl
typedef vector_iterator<SCALARTYPE, ALIGNMENT> self_type;
public:
vector_iterator() : base_type(){};
- vector_iterator(viennacl::ocl::handle<cl_mem> const & elements, unsigned int index) : base_type(elements, index) {};
+ vector_iterator(viennacl::ocl::handle<cl_mem> const & elements, std::size_t index) : base_type(elements, index) {};
/** @brief Constructor
* @param vec The vector over which to iterate
* @param index The starting index of the iterator
@@ -204,6 +207,8 @@ namespace viennacl
typedef vcl_ptrdiff_t difference_type;
typedef const_vector_iterator<SCALARTYPE, ALIGNMENT> const_iterator;
typedef vector_iterator<SCALARTYPE, ALIGNMENT> iterator;
+
+ static const int alignment = ALIGNMENT;
/** @brief Default constructor in order to be compatible with various containers.
*/
@@ -481,8 +486,9 @@ namespace viennacl
op_prod> & proxy);
-
+ //
//////////// compressed_matrix<>
+ //
/** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type compressed_matrix.
*
* @param proxy An expression template proxy class
@@ -528,8 +534,9 @@ namespace viennacl
const vector<SCALARTYPE, ALIGNMENT>,
op_prod> & proxy);
-
- //coordinate_matrix<>
+ //
+ // coordinate_matrix<>
+ //
/** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type coordinate_matrix.
*
* @param proxy An expression template proxy class
@@ -575,6 +582,202 @@ namespace viennacl
const vector<SCALARTYPE, ALIGNMENT>,
op_prod> & proxy);
+ //
+ // circulant_matrix<>
+ //
+ /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const circulant_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+
+ //
+ // hankel_matrix<>
+ //
+ /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const hankel_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ //
+ // toeplitz_matrix<>
+ //
+ /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const toeplitz_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+
+ //
+ // vandermonde_matrix<>
+ //
+ /** @brief Operator overload for v1 = A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 += A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator+=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 -= A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> & operator-=(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 + A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator+(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+ /** @brief Operator overload for v1 - A * v2, where v1, v2 are vectors and A is a sparse matrix of type circulant_matrix.
+ *
+ * @param proxy An expression template proxy class
+ */
+ template <unsigned int MAT_ALIGNMENT>
+ vector<SCALARTYPE, ALIGNMENT> operator-(const vector_expression< const vandermonde_matrix<SCALARTYPE, MAT_ALIGNMENT>,
+ const vector<SCALARTYPE, ALIGNMENT>,
+ op_prod> & proxy);
+
+
+
///////////////////////////// Matrix Vector interaction end ///////////////////////////////////
//enlarge or reduce allocated memory and set unused memory to zero
@@ -589,7 +792,7 @@ namespace viennacl
if (new_size != size_)
{
- unsigned int new_internal_size = viennacl::tools::roundUpToNextMultiple<unsigned int>(new_size, ALIGNMENT);
+ std::size_t new_internal_size = viennacl::tools::roundUpToNextMultiple<std::size_t>(new_size, ALIGNMENT);
std::vector<SCALARTYPE> temp(size_);
if (preserve && size_ > 0)
@@ -1017,7 +1220,10 @@ namespace viennacl
{
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "clear");
- viennacl::ocl::enqueue(k(elements_, static_cast<cl_uint>(internal_size())));
+ viennacl::ocl::enqueue(k(elements_,
+ cl_uint(0),
+ cl_uint(internal_size()))
+ );
}
//void swap(vector & other){}
@@ -1167,6 +1373,7 @@ namespace viennacl
CPU_ITERATOR const & cpu_end,
vector_iterator<SCALARTYPE, ALIGNMENT> gpu_begin)
{
+ assert(cpu_end - cpu_begin > 0);
if (cpu_begin != cpu_end)
{
//we require that the size of the gpu_vector is larger or equal to the cpu-size
@@ -1348,17 +1555,19 @@ namespace viennacl
*
* @param vec1 The first vector
* @param vec2 The second vector
- * @param NUM_THREADS The number of threads per work group
*/
template<class SCALARTYPE, unsigned int ALIGNMENT>
void swap(viennacl::vector<SCALARTYPE, ALIGNMENT> & vec1,
viennacl::vector<SCALARTYPE, ALIGNMENT> & vec2)
{
- assert(vec1.size() == vec2.size());
+ assert(viennacl::traits::size(vec1) == viennacl::traits::size(vec2)
+ && "Incompatible vector sizes in swap()");
viennacl::ocl::kernel & k = viennacl::ocl::get_kernel(viennacl::linalg::kernels::vector<SCALARTYPE, ALIGNMENT>::program_name(), "swap");
- viennacl::ocl::enqueue(k(vec1, vec2, static_cast<cl_uint>(vec1.size())));
+ viennacl::ocl::enqueue(k(viennacl::traits::handle(vec1), cl_uint(viennacl::traits::start(vec1)), cl_uint(viennacl::traits::size(vec1)),
+ viennacl::traits::handle(vec2), cl_uint(viennacl::traits::start(vec2)), cl_uint(viennacl::traits::size(vec2)))
+ );
}
/** @brief Swaps the content of two vectors by swapping OpenCL handles only, NO data is copied
diff --git a/viennacl/vector_proxy.hpp b/viennacl/vector_proxy.hpp
new file mode 100644
index 0000000..b8ca885
--- /dev/null
+++ b/viennacl/vector_proxy.hpp
@@ -0,0 +1,150 @@
+#ifndef VIENNACL_VECTOR_PROXY_HPP_
+#define VIENNACL_VECTOR_PROXY_HPP_
+
+/* =========================================================================
+ Copyright (c) 2010-2011, Institute for Microelectronics,
+ Institute for Analysis and Scientific Computing,
+ TU Wien.
+
+ -----------------
+ ViennaCL - The Vienna Computing Library
+ -----------------
+
+ Project Head: Karl Rupp rupp at iue.tuwien.ac.at
+
+ (A list of authors and contributors can be found in the PDF manual)
+
+ License: MIT (X11), see file LICENSE in the base directory
+============================================================================= */
+
+/** @file vector_proxy.hpp
+ @brief Proxy classes for vectors.
+*/
+
+#include "viennacl/forwards.h"
+#include "viennacl/range.hpp"
+#include "viennacl/vector.hpp"
+
+namespace viennacl
+{
+
+ template <typename VectorType>
+ class vector_range
+ {
+ typedef vector_range<VectorType> self_type;
+
+ public:
+ typedef typename VectorType::value_type value_type;
+ typedef range::size_type size_type;
+ typedef range::difference_type difference_type;
+ typedef value_type reference;
+ typedef const value_type & const_reference;
+
+ static const int alignment = VectorType::alignment;
+
+ vector_range(VectorType & v,
+ range const & entry_range) : v_(v), entry_range_(entry_range) {}
+
+ size_type start() const { return entry_range_.start(); }
+ size_type size() const { return entry_range_.size(); }
+
+ template <typename LHS, typename RHS, typename OP>
+ self_type & operator = (const vector_expression< LHS,
+ RHS,
+ OP > & proxy)
+ {
+ assert( false && "Not implemented!");
+ return *this;
+ }
+
+ self_type & operator += (self_type const & other)
+ {
+ viennacl::linalg::inplace_add(*this, other);
+ return *this;
+ }
+
+
+ //const_reference operator()(size_type i, size_type j) const { return A_(start1() + i, start2() + i); }
+ //reference operator()(size_type i, size_type j) { return A_(start1() + i, start2() + i); }
+
+ VectorType & get() { return v_; }
+ const VectorType & get() const { return v_; }
+
+ private:
+ VectorType & v_;
+ range entry_range_;
+ };
+
+
+ template<typename VectorType>
+ std::ostream & operator<<(std::ostream & s, vector_range<VectorType> const & proxy)
+ {
+ typedef typename VectorType::value_type ScalarType;
+ std::vector<ScalarType> temp(proxy.size());
+ viennacl::copy(proxy, temp);
+
+ //instead of printing 'temp' directly, let's reuse the existing functionality for viennacl::vector. It certainly adds overhead, but printing a vector is typically not about performance...
+ VectorType temp2(temp.size());
+ viennacl::copy(temp, temp2);
+ s << temp2;
+ return s;
+ }
+
+
+
+
+ /////////////////////////////////////////////////////////////
+ ///////////////////////// CPU to GPU ////////////////////////
+ /////////////////////////////////////////////////////////////
+
+ //row_major:
+ template <typename VectorType, typename SCALARTYPE>
+ void copy(const VectorType & cpu_vector,
+ vector_range<vector<SCALARTYPE> > & gpu_vector_range )
+ {
+ assert(cpu_vector.end() - cpu_vector.begin() >= 0);
+
+ if (cpu_vector.end() - cpu_vector.begin() > 0)
+ {
+ //we require that the size of the gpu_vector is larger or equal to the cpu-size
+ std::vector<SCALARTYPE> temp_buffer(cpu_vector.end() - cpu_vector.begin());
+ std::copy(cpu_vector.begin(), cpu_vector.end(), temp_buffer.begin());
+ cl_int err = clEnqueueWriteBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_vector_range.get().handle(), CL_TRUE, sizeof(SCALARTYPE)*gpu_vector_range.start(),
+ sizeof(SCALARTYPE)*temp_buffer.size(),
+ &(temp_buffer[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ }
+ }
+
+
+ /////////////////////////////////////////////////////////////
+ ///////////////////////// GPU to CPU ////////////////////////
+ /////////////////////////////////////////////////////////////
+
+
+ template <typename VectorType, typename SCALARTYPE>
+ void copy(vector_range<vector<SCALARTYPE> > const & gpu_vector_range,
+ VectorType & cpu_vector)
+ {
+ assert(cpu_vector.end() - cpu_vector.begin() >= 0);
+
+ if (cpu_vector.end() > cpu_vector.begin())
+ {
+ std::vector<SCALARTYPE> temp_buffer(cpu_vector.end() - cpu_vector.begin());
+ cl_int err = clEnqueueReadBuffer(viennacl::ocl::get_queue().handle(),
+ gpu_vector_range.get().handle(), CL_TRUE, sizeof(SCALARTYPE)*gpu_vector_range.start(),
+ sizeof(SCALARTYPE)*temp_buffer.size(),
+ &(temp_buffer[0]), 0, NULL, NULL);
+ VIENNACL_ERR_CHECK(err);
+ viennacl::ocl::get_queue().finish();
+
+ //now copy entries to cpu_vec:
+ std::copy(temp_buffer.begin(), temp_buffer.end(), cpu_vector.begin());
+ }
+ }
+
+
+}
+
+#endif
\ No newline at end of file
--
ViennaCL packaging
More information about the debian-science-commits
mailing list